4个版本
使用旧的Rust 2015
0.1.2 | 2020年6月26日 |
---|---|
0.1.1 | 2020年1月8日 |
0.0.2 | 2018年11月8日 |
0.0.1 | 2018年10月10日 |
#74 in #amount
115KB
3K SLoC
Komodo (KMD) RPC客户端
一个用于Komodo (KMD) 的RPC客户端,使用Rust编写。将来,您可以使用这个库来创建可以与Komodo区块链通信的Rust应用程序。由于Crypto Conditions支持所有Komodo资产链,因此可以通过这个crate创建dApps。或者至少,这是我对此的目标。
向coblox团队感谢他们的Rust BTC RPC客户端。
这是一个进行中的项目!
待办事项
- 实现所有API调用
- 将地址参数转换为类型
- 处理空响应(setaccount)
- 改进错误处理客户端
-
在先前交易中查找redeemScript(如果有的话) - 在参数中合理使用引用
- 将
Into<String>
用作字符串类型的参数 - 在参数中使用单个地址时,无需使用AddressList
- 如果需要的资产链不在枚举中,定义自己的
Chain
- 正确公开参数/类型
- 处理特殊案例:在
fromaddresses
、z_mergetoaddress
中使用通配符"*"
- 为客户端提供手动RPC凭据
- Unspent结构在响应中包含账户,这已被弃用。需要规避
-
listaddressgroupings
返回一个包含3种不同类型的数组,对于每个不同的地址。如何在serde中修复 - 为几种类型添加辅助函数
- 在向
address_utxos
输入金额时选择一组utxos
- 在向
这个包装器旨在
- 无状态,即一层薄薄的。使用此库的应用程序负责维护状态。
特性
- 将
getaddressutxos
获取的utxolist转换为createrawtransaction
中的输入 - 在Win、MacOS和Ubuntu/Debian上自动从配置文件中获取KMD/Assetchain参数
目前支持的操作
以下是从 KMD版本 0.3.3b 开始的 Rust 客户端中 RPC 调用的列表
备注
valueSat
和valueZat
分别被省略在getrawtransaction
和decoderawtransaction
中- 一些网络 RPC 在 komodod 中没有返回响应。这些 RPC 在进一步通知之前不受支持,包括:
- addnode
- clearbanned
- z_importkey
- z_importviewingkey
- z_importwallet
- importaddress
- importwallet
- Sapling 不支持
z_exportviewingkey
或一般查看密钥 - 在实际请求之前检查 RPC 参数
- 地址参数中的地址有效(目前仅为基本长度检查)
sendtoaddress
返回的 transaction id 是小端序,与在浏览器中看到的不同。在TransactionId
类型上调用be_hex_string
,你将得到大端序的 txid。- 反序列化的交易 id 总是小端序。
RPCs
CClib
- cclib 方法 [evalcode] [JSON 参数]
- cclibaddress [evalcode] [pubkey]
- cclibinfo
FSM
- FSMaddress [pubkey]
- FSMcreate 名称 状态
- FSMinfo 资金交易 txid
- FSMlist
Addressindex
- checknotarization
- getaddressbalance
- getaddressdeltas
- getaddressmempool
- getaddresstxids
- getaddressutxos
- getnotarypayinfo
- getsnapshot
Auction
- auctionaddress [pubkey]
Blockchain
- coinsupply
- getbestblockhash
- getblock "hash|height" ( verbose )
- getblockchaininfo
- getblockcount
- getblockhash 索引
- getblockhashes 时间戳 (需要 timestampindex=1)
- getblockheader "hash" ( verbose )
- getchaintips
- getdifficulty
- getlastsegidstakes 深度
- getmempoolinfo
- getrawmempool ( verbose ) //
- getspentinfo "txid" 索引
- gettxout "txid" n ( includemempool )
- gettxoutproof ["txid",...] ( blockhash ) 需要 -txindex
- gettxoutsetinfo
- kvsearch 键
- kvupdate 键 "值" 天数 密码
- minerids 需要 height
- notaries height 时间戳
- verifychain ( 检查级别 numblocks )
- verifytxoutproof "proof"
Channels
- channelsaddress 目的公钥
- channelsclose 开放交易 txid
- channelsinfo [opentxid]
- channelsinfo [opentxid]
- channelsopen 目的公钥 n 次付款 付款
- channelspayment 前一交易 txid 原始 txid n 金额
- channelsrefund 停止 txid 原始 txid
Control
- geterablockheights
- getiguanajson
- getinfo
- getnotarysendmany
- help ( "命令" )
- stop
Crosschain
- MoMoMdata 符号 kmdheight ccid
- assetchainproof 需要 txid
- calc_MoM height MoMdepth
- getNotarisationsForBlock 区块哈希
- getimports "hash|height"
- getwalletburntransactions "count"
- height_MoM height
- importdual 仅在 -ac_import 链上工作
- importgatewaybind 仅在 -ac_import 链上工作
- importgatewaycompletesigning 仅在 -ac_import 链上工作
- importgatewayddress [pubkey]
- importgatewaydeposit 仅在 -ac_import 链上工作
- importgatewaybind 仅在 -ac_import 链上工作
- importgatewaymarkdone completesigningtx coin
- importgatewayspartialsign 仅在 -ac_import 链上工作
- importgatewaypendingdeposits bindtxid coin
- importgatewaypendingwithdraws bindtxid coin
- importgatewayprocessed bindtxid coin
- importgatewaywithdraw 仅在 -ac_import 链上工作
- migrate_checkburntransactionsource 燃烧 txid
- migrate_completeimporttransaction 导入 tx
- migrate_converttoexport 原始 tx 目标符号 导出金额
- migrate_createburntransaction 目标符号 目标地址 金额 [tokenid]
- migrate_createimporttransaction 燃烧 tx 分配 [notarytxid-1]..[notarytxid-N]
- migrate_createnotaryapprovaltransaction 燃烧 tx 交易输出证明
- scanNotarisationsDB 区块高度 符号 [blocksLimit=1440]
- selfimport 仅在 -ac_import 链上工作
骰子
- diceaddfunds 名称 资金交易ID 金额
- diceaddress [公钥]
- dicebet 名称 资金交易ID 金额 赔率
- dicefinish 名称 资金交易ID 投注交易ID
- dicefund 名称 资金 最小投注 最大投注 最大赔率 超时区块
- diceinfo 资金交易ID
- dicelist
- dicestatus 名称 资金交易ID 投注交易ID
披露
- z_getpaymentdisclosure "txid" "js_index" "output_index" ("消息")
- z_validatepaymentdisclosure "paymentdisclosure"
水龙头
- faucetaddress [公钥]
- faucetfund 金额
- faucetget
- faucetinfo
网关
- gatewaysaddress [公钥]
- gatewaysbind 代币ID 或预言机交易ID 代币 供应量 M N 公钥(s)
- gatewaysclaim 绑定交易ID 代币 存款交易ID 目的公钥 金额
- gatewayscompletesigning 提款交易ID 代币 十六进制
- gatewaysdeposit 绑定交易ID 高度 代币 代币交易ID 投注vout 存款十六进制 证明 目的公钥 金额
- gatewaysdumpprivkey 绑定交易ID 地址
- gatewaysexternaladdress 绑定交易ID 公钥
- gatewaysinfo 绑定交易ID
- gatewayslist
- gatewaysmarkdone 完成签名交易ID 代币交易ID
- gatewayspartialsign 交易ID地址 引用代币 十六进制
- gatewayspendingdeposits 绑定交易ID 代币
- gatewayspendingwithdraws 绑定交易ID 代币
- gatewaysprocessed 绑定交易ID 代币
- gatewayswithdraw 绑定交易ID 代币 提款公钥 金额
生成
- generate 块数
- getgenerate
- setgenerate generate ( genproclimit )
继承人
- heiradd 交易费 资金 资金交易ID
- heiraddress 公钥
- heirclaim 交易费 资金 资金交易ID
- heirfund 交易费 资金 继承人名称 继承人公钥 不活跃时间 备注 [代币ID]
- heirinfo 资金交易ID
- heirlist
彩票
- lottoaddress [公钥]
Marmara
- Marmaraaddress [公钥]
- marmaracreditloop 交易ID
- marmarainfo 首个高度 最后高度 最小金额 最大金额 [货币 发行者公钥]
- marmaraissue 接收者公钥 金额 货币 到期时间 审批交易ID
- marmaralock 金额 解锁高度
- marmarapoolpayout 百分比 首个高度 "[["公钥":份额], ...]"
- marmarareceive 发送者公钥 金额 货币 到期时间 batontxid
- marmarasettlement batontxid
- marmaratransfer 接收者公钥 金额 货币 到期时间 审批交易ID
挖矿
- getblocksubsidy 高度
- getblocktemplate ( "jsonrequestobject" )
- getlocalsolps
- getmininginfo
- getnetworkhashps ( blocks height )
- getnetworksolps ( blocks height )
- prioritisetransaction
- submitblock "hexdata" ( "jsonparametersobject" )
网络
- addnode "node" "add|remove|onetry" (空响应)
- clearbanned (空响应)
- disconnectnode "node"
- getaddednodeinfo dns ( "node" )
- getconnectioncount
- getdeprecationinfo
- getnettotals
- getnetworkinfo
- getpeerinfo
- listbanned
- ping
- setban "ip(/netmask)" "add|remove" (bantime) (absolute)
预言机
- oraclesaddress [公钥]
- oraclescreate 名称 描述 格式
- oraclesdata 或预言机交易ID 十六进制字符串
- oraclesfund 或预言机交易ID
- oraclesinfo 或预言机交易ID
- oracleslist
- oraclesregister 或预言机交易ID 数据费用
- oraclessamples 或预言机交易ID batonutxo 数量
- oraclessubscribe 或预言机交易ID 发布者 金额
支付
- paymentsaddress [公钥]
- paymentsairdrop "[锁定区块,最小金额,最小到地址,顶部,底部,固定标志,%22排除地址%22,...,%22排除地址N%22]"
- payments_airdroptokens "[%22tokenid%22,锁定区块,最小金额,最小到地址,顶部,底部,固定标志,%22排除公钥%22,...,%22排除公钥N%22]"
- paymentscreate "[锁定区块,最小金额,%22paytxid0%22,...,%22paytxidN%22]"
- paymentsfund "[%22createtxid%22,金额(,使用opret)]"
- paymentsinfo "[%22createtxid%22]"
- paymentslist
- paymentsmerge "[%22createtxid%22]"
- paymentsrelease "[%22createtxid%22,金额,(跳过最小值)]"
- paymentstxidopret "[分配,%22scriptPubKey%22(,%22destopret%22)]"
挂钩
- pegssaddress [公钥]
价格
- mypriceslist [all|open|closed]
- prices maxsamples
- pricesaddfunding 投注交易ID 金额
- pricesaddress [公钥]
- pricesbet 金额 杠杆 "合成表达式"
- pricescashout 投注交易ID
- pricesgetorderbook
- pricesinfo 投注交易ID [高度]
- priceslist [all|open|closed]
- pricesrefillfund 金额
- pricesrekt 投注交易ID 高度
- pricessetcostbasis 投注交易ID
原始交易
- createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...}
- decoderawtransaction "hexstring"
- decodescript "hex"
- fundrawtransaction "hexstring"
- getrawtransaction "txid" ( verbose )
- 发送原始交易 "hexstring" ( 允许高费用 )
- 签名原始交易 "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )
奖励
- rewardsaddfunding 名称 资金txid 数量
- rewardsaddress [pubkey]
- rewardscreatefunding 名称 数量 年化收益率 最小天数 最大天数 最小存款
- rewardsinfo 资金txid
- rewardslist
- rewardslock 名称 资金txid 数量
- rewardsunlock 名称 资金txid [txid]
代币
- assetsaddress [pubkey]
- mytokenorders [evalcode]
- tokenaddress [pubkey]
- tokenask 数量代币 代币id 价格
- tokenbalance 代币id [pubkey]
- tokenbid 数量代币 代币id 价格
- tokencancelask 代币id 询问txid
- tokencancelbid 代币id 报价txid
- tokenconvert evalcode 代币id 公钥 数量
- tokencreate 名称 供应 描述 [描述] [数据]
- tokenfillask 代币id 询问txid 填充单位
- tokenfillbid 代币id 报价txid 填充金额
- tokeninfo 代币id
- tokenlist
- tokenorders [代币id]
- tokentransfer 代币id 目的公钥 数量
工具
- createmultisig nrequired ["key",...]
- decodeccopret hex
- estimatefee nblocks
- estimatepriority nblocks
- invalidateblock "hash"
-
jumblr_deposit "depositaddress" -
jumblr_pause -
jumblr_resume -
jumblr_secret "secretaddress" - reconsiderblock "hash"
- txnotarizedconfirmed txid
- validateaddress "komodoaddress"
- verifymessage "komodoaddress" "signature" "message"
- z_validateaddress "zaddr"
钱包
- addmultisigaddress nrequired ["key",...] ( "account" )
- backupwallet "destination" (需要设置
-exportdir
) - cleanwallettransactions "txid"
- dumpprivkey "komodoaddress"
- dumpwallet "filename" (需要设置
-exportdir
) - encryptwallet "passphrase"
-
getaccount "KMD_address"(已弃用) -
getaccountaddress "account"(已弃用) -
getaddressesbyaccount "account"(已弃用) - getbalance ( "account" minconf includeWatchonly ) (account 已弃用)
- getnewaddress ( "account" ) (account 已弃用)
- getrawchangeaddress
-
getreceivedbyaccount "account" ( minconf )(account 已弃用) - getreceivedbyaddress "KMD_address" ( minconf )
- gettransaction "txid" ( includeWatchonly )
- getunconfirmedbalance
- getwalletinfo
- importaddress "address" ( "label" rescan ) (空响应)
- importprivkey "komodoprivkey" ( "label" rescan )
- importwallet "filename" (空响应)
- keypoolrefill ( newsize ) (空响应)
-
listaccounts ( minconf includeWatchonly)(已弃用) - listaddressgroupings
- listlockunspent
-
listreceivedbyaccount ( minconf includeempty includeWatchonly)(已弃用) - listreceivedbyaddress ( minconf includeempty includeWatchonly)
- listsinceblock ( "blockhash" target-confirmations includeWatchonly)
- listtransactions ( "account" count from includeWatchonly)
- listunspent ( minconf maxconf ["address",...] )
- lockunspent unlock [{"txid":"txid","vout":n},...]
-
move "fromaccount" "toaccount" amount ( minconf "comment" )(已弃用) - resendwallettransactions
-
sendfrom "fromaccount" "toKMDaddress" amount ( minconf "comment" "comment-to" )(已弃用) - sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] )
- sendtoaddress "KMD_address" amount ( "comment" "comment-to" subtractfeefromamount )
-
setaccount "KMD_address" "account"(已弃用) -
setpubkey pubkey(不支持,因为返回类型错误) - settxfee 数量
- signmessage "t-addr" "message"
屏蔽 (查看API)
- z_exportkey "zaddr"
- z_exportviewingkey "zaddr" 不支持sapling (https://github.com/zcash/zcash/issues/3060)
- z_exportwallet "filename"
- z_getbalance "address" ( minconf )
- z_getnewaddress ( type )
- z_getoperationresult (["operationid", ... ])
- z_getoperationstatus (["operationid", ... ])
- z_gettotalbalance ( minconf includeWatchonly )
- z_importkey "zkey" ( rescan startHeight ) (无输出)
- z_importviewingkey "vkey" ( rescan startHeight ) (无输出)
- z_importwallet "filename" (无输出)
- z_listaddresses ( 包含仅监视 )
- z_listoperationids
- z_listreceivedbyaddress "地址" ( 最小确认数 )
- z_mergetoaddress ["fromaddress", ... ] "toaddress" ( 费用 ) ( 透明限制 ) ( 保密限制 ) ( 备注 )
- z_sendmany "fromaddress" [{"address":... ,"amount":...},...] ( 最小确认数 ) ( 费用 )
- z_shieldcoinbase "fromaddress" "tozaddress" ( 费用 ) ( 限制 )
-
zcbenchmark benchmarktype samplecount已弃用 -
zcrawjoinsplit rawtx inputs outputs vpub_old vpub_new已弃用 -
zcrawkeygen已弃用 -
zcrawreceive zcsecretkey encryptednote已弃用 -
zcsamplejoinsplit已弃用
依赖项
~27MB
~550K SLoC