闲社服务运行正常AI智能体自动化平台
p

土豆小费技能

技能标识:potato-tipper

Skill for AI agents to setup the Potato Tipper on a Universal Profile on LUKSO (requires private key), and learn to build innovative tip-on-follow solutions.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.2
检测标记
后台标记通过
免费
免费获取
1
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

土豆小费技能

Potato Tipper - OpenClaw 技能

将此技能用于 Potato Tipper 合约仓库中任何技术相关的内容:

  • - 📖 阅读/理解 Potato Tipper 协议
  • ⚙️ 在 LUKSO UP 配置上为你的通用资料设置 + 配置 Potato Tipper
  • ❓ 设置时的权限故障排除
  • 💡 使用 Potato Tipper 的思路构建新的打赏系统

它是什么(1段心智模型)

Potato Tipper 协议是 LUKSO 上的一个 LSP1 通用接收器委托,它会自动向新关注者打赏 $POTATO 代币。

PotatoTipper 是一个 LSP1 通用接收器委托,它响应 LSP26 关注/取消关注通知,并在符合条件时将 LSP7 $POTATO 代币 从被关注用户的 🆙 转移到新关注者的 🆙。每个用户的设置存储在 ERC725Y 存储中专用数据键下,合约提供自文档化的辅助视图用于配置键。

此技能提供的内容

  • - 理解类似于 Potato Tipper 的架构和 LUKSO/LSP 集成(LSP1、LSP7、LSP26、ERC725Y)
  • 了解此模式的安全性和已知限制
  • 使用所需的权限和数据键配置通用资料
  • 学习使用关注即打赏模式构建创新集成
  • 包含 TypeScript(wagmi/viem/ethers + erc725.js)和 Solidity 代码示例

已部署地址

参见 references/addresses.md 获取 LUKSO 主网和测试网上的所有合约地址(PotatoTipper、$POTATO 代币、LSP26 注册表、RPC 端点、浏览器)。

快速工作流

1) 熟悉环境(仓库地图)

阅读 references/repo-overview.md 获取文件地图 + 合约职责。

2) 配置用户的 🆙 以使用 PotatoTipper(一键式)

这使用一个 Foundry 脚本,通过单次 batchCalls 交易执行完整设置。

步骤 1: 在 Potato Tipper 合约仓库内创建文件 script/SetupPotatoTipper.s.sol:

solidity
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.28;

import {Script} from forge-std/Script.sol;
import {console2} from forge-std/console2.sol;

interface ILSP0 {
function batchCalls(uint256[] calldata values, bytes[] calldata payloads) external returns (bytes[] memory);
}

interface IERC725Y {
function setDataBatch(bytes32[] calldata keys, bytes[] calldata values) external;
}

interface ILSP7 {
function authorizeOperator(address operator, uint256 amount, bytes calldata data) external;
}

/// @title 通过 LSP0 batchCalls 设置 PotatoTipper
/// @notice 一键设置:连接 PotatoTipper + 设置参数 + 授权预算
/// @dev 运行方式:forge script script/SetupPotatoTipper.s.sol:SetupPotatoTipper --rpc-url --broadcast
///
/// 所需环境变量:
/// - PRIVATE_KEY:EOA 控制器密钥(必须在 UP 上拥有 ADDUNIVERSALRECEIVERDELEGATE + CALL 权限)
/// - UP_ADDRESS:要配置的通用资料地址
/// - POTATOTIPPERADDRESS:PotatoTipper 合约地址
/// - POTATOTOKENADDRESS:$POTATO LSP7 代币地址
/// - TIP_AMOUNT:每位关注者的打赏金额(以 wei 为单位,例如 1000000000000000000 = 1 POTATO)
/// - MIN_FOLLOWERS:符合条件的最低关注者数量(例如 5)
/// - MINPOTATOBALANCE:符合条件的最低 POTATO 余额(以 wei 为单位,例如 100000000000000000000 = 100 POTATO)
/// - TIPPING_BUDGET:授权用于打赏的总 POTATO 数量(以 wei 为单位,例如 1000000000000000000000 = 1000 POTATO)
contract SetupPotatoTipper is Script {
bytes32 constant LSP1DELEGATEONFOLLOWDATAKEY = 0x0cfc51aec37c55a4d0b1000071e02f9f05bcd5816ec4f3134aa2e5a916669537;
bytes32 constant LSP1DELEGATEONUNFOLLOWDATAKEY = 0x0cfc51aec37c55a4d0b100009d3c0b4012b69658977b099bdaa51eff0f0460f4;
bytes32 constant POTATOTIPPERSETTINGS_KEY = 0xd1d57abed02d4c2d7ce00000e8211998bb257be214c7b0997830cd295066cc6a;

function run() external {
address upAddress = vm.envAddress(UP_ADDRESS);
address potatoTipperAddress = vm.envAddress(POTATOTIPPERADDRESS);
address potatoTokenAddress = vm.envAddress(POTATOTOKENADDRESS);
uint256 tipAmount = vm.envUint(TIP_AMOUNT);
uint256 minFollowers = vm.envUint(MIN_FOLLOWERS);
uint256 minPotatoBalance = vm.envUint(MINPOTATOBALANCE);
uint256 tippingBudget = vm.envUint(TIPPING_BUDGET);

console2.log(=== PotatoTipper 设置 ===);
console2.log(UP 地址:, upAddress);
console2.log(PotatoTipper:, potatoTipperAddress);
console2.log(POTATO 代币:, potatoTokenAddress);
console2.log(打赏金额(wei):, tipAmount);
console2.log(最低关注者数:, minFollowers);
console2.log(最低 POTATO 余额(wei):, minPotatoBalance);
console2.log(打赏预算(wei):, tippingBudget);
console2.log();

bytes32[] memory dataKeys = new bytes32[](3);
dataKeys[0] = POTATOTIPPERSETTINGS_KEY;
dataKeys[1] = LSP1DELEGATEONFOLLOWDATAKEY;
dataKeys[2] = LSP1DELEGATEONUNFOLLOWDATAKEY;

bytes[] memory dataValues = new bytes[](3);
dataValues[0] = abi.encode(tipAmount, minFollowers, minPotatoBalance);
dataValues[1] = abi.encodePacked(potatoTipperAddress);
dataValues[2] = abi.encodePacked(potatoTipperAddress);

bytes[] memory payloads = new bytes[](2);
payloads[0] = abi.encodeCall(IERC725Y.setDataBatch, (dataKeys, dataValues));

bytes memory authorizeCalldata = abi.encodeCall(
ILSP7.authorizeOperator, (potatoTipperAddress, tippingBudget, )
);
payloads[1] = abi.encodeWithSignature(
execute(uint256,address,uint256,bytes), 0, potatoTokenAddress, 0, authorizeCalldata
);

uint256[] memory values = new uint256[](2);
values[0] = 0;
values[1] = 0;

vm.startBroadcast(vm.envUint(PRIVATE_KEY));

console2.log(正在向 UP 广播 batchCalls...);
ILSP0(upAddress).batchCalls(values, payloads);

vm.stopBroadcast();

console2.log();
console2.log(=== 设置完成 ===);
console2.log(PotatoTipper 现已连接到 UP!);
console2.log(已配置的设置:);
console2.log( - 打赏金额:, tipAmount, wei);
console2.log( - 最低关注者数:, minFollowers);
console2.log( - 最低 POTATO 余额:, minPotatoBalance, wei);
console2.log(已授权的打赏预算:, tippingBudget, wei);
}
}

步骤 2: 通过 shell 包装器运行设置:

bash
TIP_AMOUNT=42000000000000000000 \
MIN_FOLLOWERS=5 \
MINPOTATOBALANCE=100000000000000000000 \
TIPPING_BUDGET=1000000000000000000000 \
PRIVATE_KEY=0x... \
./skills/potato-tipper/scripts/setuppotatotipper.sh luksoTestnet 0xYourUPAddress

此单次交易:

  • - 连接 LSP1 委托(关注 + 取消关注)
  • 设置打

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 potato-tipper-1776298011 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 potato-tipper-1776298011 技能

通过命令行安装

skillhub install potato-tipper-1776298011

下载

⬇ 下载 potato-tipper v1.0.2(免费)

文件大小: 25.49 KB | 发布时间: 2026-4-16 17:22

v1.0.2 最新 2026-4-16 17:22
- Simplified and clarified the skill description and audience.
- Refocused on setup, configuration, and technical guidance for Potato Tipper on LUKSO Universal Profiles.
- Highlighted core learning areas: protocol understanding, troubleshooting, configuring permissions/data keys, and tip-on-follow integrations.
- Explicitly stated TypeScript and Solidity code example support.
- Non-essential/overly detailed architectural explanations trimmed for brevity.
- No file or functional changes to code; documentation only.
返回顶部