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


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

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

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

     

    一些技术人员在接触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

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

     


    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还是比较满意的,但是看官方介绍,账户参数要删除了 :

     

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

  • 相关阅读:
    Shell 中 -n 条件判断的使用
    Linux shell 中(()) [] [[ ]] 的使用
    Linux 利用黑洞实现“取消在控制台输出日志”
    Hadoop DataNode 多目录磁盘扩展配置
    Linux 挂载硬盘
    css 对元素在文档中的排列的影响
    vue-route 基础
    javaScript 琐碎
    javaScript 事件流---冒泡 && 捕获
    页面优化---利用浏览器缓存
  • 原文地址:https://www.cnblogs.com/fly-l/p/12776416.html
Copyright © 2020-2023  润新知