Filecoin开发

1、账户类型
类型 | 说明 | 系统地址 (以测试网地址为例) |
---|---|---|
Account | 普通账户 | t099, 接受销毁代币 |
Cron | 执行定时任务 | t03, 仅限系统地址 |
Init | 创建特殊账户类型 | t01, 仅限系统地址 |
Multisig | 多重签名 | |
PaymentChannel | 支付通道 | |
Reward | 发放区块奖励 | t02, 仅限系统地址 |
StorageMarket | t05, 仅限系统地址 | |
StorageMiner | 矿工 | |
StoragePower | t04, 仅限系统地址 | |
System | 系统消息的调用方 | t00, 仅限系统地址 |
VerifiedRegistry | t06, 仅限系统地址 |
注:普通账户分为 secp256k1 和 bls 两种类型,前者地址以 t1 开头,后者以 t3 开头;两者都有一个对应的 t0 开头的 ID 地址。其余账户类型除系统账户外,默认地址都是以 t0 开头的 ID 地址,并且都有对应的 t2 开头的地址。
2、消息类型
消息各参数含义:
类型 | 说明 |
---|---|
Version | 版本号 |
To | 接收方 |
From | 发送方 |
Nonce | |
Value | 金额 |
GasPrice | gas 价格 |
GasLimit | gas 最大使用量 |
Method | 消息类型 |
Params | 调用参数 |
消息执行结果:
类型 | 说明 | 消息执行结果 |
---|---|---|
ExitCode | 状态码 | 0 表示成功 |
Return | 返回值 | |
GasUsed | gas 使用量 | |
Error | 错误信息 | 需要通过 StateReplay RPC 获取,无法实时同步 |
InternalExecutions | 内部消息,例如 CreateMiner 会调用 Exec |
常用消息开发说明文档
通用消息
Send
普通转账,将金额 Value 从 From 转移到 To。
调用参数
任意字节串
返回值
无
Constructor (系统调用)
创建账户时调用的构造函数。
Cron 消息
EpochTick (系统调用,定时任务)
触发当前高度定时任务。
Init 消息
Exec
创建特殊类型的账户,例如 Multisig, PaymentChannel 等,创建成功后将金额 Value 转移至新创建的账户。
调用参数
CodeCID 所创建账户类型的 CID 格式; ConstructorParams 创建账户的 Constructor 消息参数。
返回值
IDAddress 新创建账户的 ID 格式地址,地址前缀 t0; RobustAddress 新创建账户的 Hash 格式地址,该格式不会被分叉影响。地址前缀 t2。
Reward 消息
AwardBlockReward (系统调用)
发送区块奖励。*Penalty* 会被销毁。
调用参数
Miner 挖出区块的矿工; Penalty 矿工打包 异常交易 的惩罚;(大多数情况不会有 Penalty) GasReward 所有交易的 gas 费用。
返回值
无
LastPerEpochReward (系统调用)
计算当前高度的区块奖励总和 (= 5 * 每个区块的奖励)。
调用参数
无
返回值
奖励数值
UpdateNetworkKPI (系统调用,定时任务)
更新全网算力、奖励等参数。
StorageMiner 消息
ControlAddresses (系统调用)
获取矿工 Owner 和 Worker 地址。
调用参数
无
返回值
Owner Owner 地址; Worker Worker 地址。
ChangeWorkerAddress
修改矿工 Worker。
调用参数
NewWorker 新的 Worker。
返回值
无
ChangePeerID
修改矿工 PeerID。
调用参数
NewID 新的 PeerID。
返回值
无
SubmitWindowedPoSt (TODO)
矿工提交抽查信息。
调用参数
Deadline Partitions Proofs Skipped
返回值
无
PreCommitSector (TODO)
矿工提交 PreCommit 信息。
调用参数
RegisteredProof SectorNumber Sector 序号; SealedCID SealedRandEpoch DealIDs Expiration Sector 过期时间。
返回值
无
ProveCommitSector (TODO)
矿工提交 ProveCommit 信息。
调用参数
SectorNumber Sector 序号; Proof
返回值
无
WithdrawBalance
将矿工地址内的余额提取至 Owner 地址,提取的金额为 AmountRequested 与 AvailableBalance 的较小值,具体金额可在 InternalExecutions 中获取。
调用参数
AmountRequested 希望提取的金额。
返回值
无
ChangeMultiaddrs (TODO)
修改矿工 multiaddress。
调用参数
NewMultiAddrs 新的 multiaddress 列表。
返回值
无
StoragePower 消息
CreateMiner
内部调用 Exec 创建矿工账户,创建成功后将金额 Value 转移至矿工账户。
调用参数
Owner 矿工的拥有者,管钱; Worker 负责挖矿计算的地址; SealProofType 表示矿工的扇区大小等信息; Peer 矿工的 PeerID。 Multiaddrs 矿工的 multiaddress 列表,可以用来连接矿工节点。
返回值
IDAddress 新创建账户的 ID 格式地址,地址前缀 t0; RobustAddress 新创建账户的 Hash 格式地址,该格式不会被分叉影响。地址前缀 t2。
DeleteMiner (代码未实现)
删除矿工账户,创建成功后会将金额 Value 转移至矿工账户。只有当矿工没有算力时才能删除,矿工余额会被销毁。
调用参数
Miner 矿工地址。
返回值
