中國互聯網安全企業360集團創始人兼CEO周鴻禕( yī)先生曾引用毛主席「地在人失,人地皆失。地失人在,人地皆得」的名言來形容互聯網產品和用戶之間微妙的關係,有了用戶便會有收入,但若僅僅關注收入就會失去用戶,最終落得個「人地皆失」的下場。區塊鏈數字貨幣交易所的生存之道亦是如此。git
但是關於數字貨幣交易所跑路、平臺數字資產被盜、宕機拔網線插等惡性事件層出不窮,給各大數字貨幣交易所帶來了嚴重的信任危機。安全與風控成爲交易所從此發展的重中之重,例如某交易所在遭遇盜幣事件後將發展路徑的核心詞正式確立爲「安全第一」,交易所的高管層一致認爲只有平臺資金安全有保障,平臺才能謀求更長遠的發展。github
雖然數字資產價值與日俱增,但黑客、內鬼們利用交易所安全漏洞盜取數字資產動力愈發加強,面對此類事件,擔當管理數字資產重任的區塊鏈錢包彰顯着無可替代的地位。因而,交易所投資方開啓了搭建區塊鏈交易所平臺的漫漫之路。ubuntu
一些技術人員在接觸BTC期間,老是被轉帳卻不能指定轉出帳戶所而苦惱,今天就BTC bitcoin-cli轉帳和交易的API使用出一個教程,歡迎不一樣意見。api
開發環境安全
PC端A window10 + BitcoinCore(testnet,64bit) 0.16.2 下載地址服務器
PC端B ubuntu16.04 + BitcoinCore 0.16.2 安裝教程post
轉帳與交易的api區塊鏈
1、sendtoaddress方法spa
一、命令格式:sendtoaddress 「address」 amount ( 「comment」 「comment_to」 subtractfeefromamount replaceable conf_target 「estimate_mode」)二、舉例(如下舉例都是在PC端B):blog
bitcoin-cli sendtoaddress 「1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd」 0.1 「donation」 「seans outpost」
進行返回交易id或者錯誤信息的操做。
三、 筆者看法:不少方法都說起sendtoaddress,簡單理解是對某個地址轉帳,但並未設置轉出帳號或者轉出地址的參數,筆者理解此時是以整個錢包的餘額爲轉出的。
2、關於使用utxo 建立交易的方法
必須用到三個API,它們是 createrawtransaction(建立交易),signrawtransaction (簽名交易)及sendrawtransaction(廣播交易),
一、命令格式:
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 )
二、舉例:參考這個。
三、筆者看法:首先要列出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元的支票,不明白爲何還能列出來。
3、 sendfrom
官方介紹提醒下個版本要刪除了
一、命令格式 sendfrom 「fromaccount」 「toaddress」 amount ( minconf 「comment」 「comment_to」 )
二、舉例:bitcoin-cli sendfrom 「tabby」 「1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd」 0.01 6 「donation」 「seans outpost」
三、筆者看法:從帳戶tabby中轉給地址1M72…..0.01 BTC,確認數6。 除了不能轉個多個地址。
4、 sendmany
在sendfrom原有基礎上增添了多個轉帳地址
一、命令格式:sendmany 「fromaccount」 {「address」:amount,…} ( minconf 「comment」 二、二、舉例: bitcoin-cli sendmany 「tabby」 「{\」1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\」:0.01,\」1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\」:0.02}」 6
二、筆者看法: 舉例中從帳戶tabby轉給地址1D1Z…..0.01 BTC,給地址1353t…..轉0.02BTC,確認數6。
對此api仍是比較滿意的,可是看官方介紹,帳戶參數要刪除了 :
傳統交易所本身開發的錢包都是熱錢包機制,節點同步慢,歸集很是麻煩,最重要的是這些私鑰存在服務器上危險係數極高,黑客一旦攻破安全防線,幾乎全部數字資產被盜走。更重要的是,本身開發錢包須要搭建各個幣種節點,太耗費硬盤和同步時間。在github上偶遇優盾錢包這個企業錢包開放平臺後,經過API直接接入就行,有獨立客戶端操做審覈、歸集等,私鑰也是本身在客戶端上管理,服務器上不存。