BTC bitcoin-cli转账及交易的API使用教程

https://www.cnblogs.com/fly-l/p/12776416.html

中国互联网安全企业360集团创始人兼CEO周鸿祎( yī)先生曾引用毛主席“地在人失,人地皆失。地失人在,人地皆得”的名言来形容互联网产品和用户之间微妙的关系,有了用户便会有收入,但若仅仅关注收入就会失去用户,最终落得个“人地皆失”的下场。区块链数字货币交易所的生存之道亦是如此。

可是关于数字货币交易所跑路、平台数字资产被盗、宕机拔网线插等恶性事件层出不穷,给各大数字货币交易所带来了严重的信任危机。安全与风控成为交易所今后发展的重中之重,例如某交易所在遭遇盗币事件后将发展路径的核心词正式确立为“安全第一”,交易所的高管层一致认为只有平台资金安全有保障,平台才能谋求更长远的发展。

虽然数字资产价值与日俱增,但黑客、内鬼们利用交易所安全漏洞盗取数字资产动力愈发增强,面对此类事件,担当管理数字资产重任的区块链钱包彰显着无可替代的地位。于是,交易所投资方开启了搭建区块链交易所平台的漫漫之路。

 BTC bitcoin-cli转账及交易的API使用教程_第1张图片

 

 

一些技术人员在接触BTC期间,总是被转账却不能指定转出账户所而苦恼,今天就BTC bitcoin-cli转账交易的API使用出一个教程,欢迎不同意见。


开发环境

PC端A window10 + BitcoinCore(testnet,64bit) 0.16.2 下载地址

PC端B ubuntu16.04 + BitcoinCore 0.16.2 安装教程

 

转账与交易的api

一、sendtoaddress方法

1、命令格式:sendtoaddress “address” amount ( “comment” “comment_to” subtractfeefromamount replaceable conf_target “estimate_mode”)2、举例(以下举例都是在PC端B):

bitcoin-cli sendtoaddress “1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd” 0.1 “donation” “seans outpost”

进行返回交易id或者错误信息的操作。

3、 笔者见解:很多方法都提及sendtoaddress,简单理解是对某个地址转账,但并未设置转出账号或者转出地址的参数,笔者理解此时是以整个钱包的余额为转出的。


二、关于使用utxo 创建交易的方法

必须用到三个API,它们是 createrawtransaction(创建交易),signrawtransaction (签名交易)及sendrawtransaction(广播交易),

1、命令格式:

createrawtransaction [{“txid”:”id”,”vout”:n},…] {“address”:amount,”data”:”hex”,…} ( locktime ) ( replaceable )

signrawtransaction “hexstring” ( [{“txid”:”id”,”vout”:n,”scriptPubKey”:”hex”,”redeemScript”:”hex”},…] [“privatekey1”,…] sighashtype )

sendrawtransaction “hexstring” ( allowhighfees )

2、举例:参考这个。

3、笔者见解:首先要列出utxo,假如列出了太多项,可以选择在listunspent 后面加地址筛选utxo, 比如

bitcoin-cli listunspent 6 9999999 “[\”1PGFqEzfmQch1gKD3ra4k18PNj3tTUUSqg\”,\”1LtvqCaApEdUGFkpKMM4MstjcaL4dKg8SP\”]”

将1PGF…和1Ltvq…地址的6到9999999确认数的utxo罗列出来。

接着选取utxo的输出作为 createrawtransaction输入,然后填写想要转账的地址和金额,最终在进行签名和广播。

恰恰在regtest环境中确认数已经达到6,笔者遇到转账的地址收到金额后,listunspent依旧能列出作为本次输入的uxto的问题,这次的utxo应该不再出现,

通俗来说:小明有一张面值10元的支票,小明要购买一杯5元的奶茶,此时小明需要创建两张面额5元支票,一张给商家,一张找零给他自己,同时还需要原来这张面额10元的支票撕毁。回到举例中作为输入的utxo就是10元的支票,不明白为什么还能列出来。


三、 sendfrom

官方介绍提醒下个版本要删除了

 BTC bitcoin-cli转账及交易的API使用教程_第2张图片


1、命令格式 sendfrom “fromaccount” “toaddress” amount ( minconf “comment” “comment_to” )

2、举例:bitcoin-cli sendfrom “tabby” “1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd” 0.01 6 “donation” “seans outpost”

3、笔者见解:从账户tabby中转给地址1M72…..0.01 BTC,确认数6。 除了不能转个多个地址。


四、 sendmany

在sendfrom原有基础上增添了多个转账地址

1、命令格式:sendmany “fromaccount” {“address”:amount,…} ( minconf “comment” 2、2、举例: bitcoin-cli sendmany “tabby” “{\”1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\”:0.01,\”1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\”:0.02}” 6

2、笔者见解: 举例中从账户tabby转给地址1D1Z…..0.01 BTC,给地址1353t…..转0.02BTC,确认数6。

对此api还是比较满意的,但是看官方介绍,账户参数要删除了 :

 BTC bitcoin-cli转账及交易的API使用教程_第3张图片

 

传统交易所自己开发的钱包都是热钱包机制,节点同步慢,归集非常麻烦,最重要的是这些私钥存在服务器上危险系数极高,黑客一旦攻破安全防线,几乎所有数字资产被盗走。更重要的是,自己开发钱包需要搭建各个币种节点,太耗费硬盘和同步时间。在github上偶遇优盾钱包这个企业钱包开放平台后,通过API直接接入就行,有独立客户端操作审核、归集等,私钥也是自己在客户端上管理,服务器上不存。

你可能感兴趣的:(BTC bitcoin-cli转账及交易的API使用教程)