和其他數字貨幣一樣,位元幣提供了我們底層的轉賬介面,當我們已經搭建完本地的節點服務,也已經大概了解了json-rpc的東西,那我們接下了看看位元幣是怎麼轉賬的
看了位元幣提供的rpc介面,簡單的轉賬分三步走
1. createrawtransaction
2. fundrawtransaction
3. signrawtransaction
4. sendrawtransaction
建立簽名交易->檢查交易費用->簽名交易->傳送交易
其中第二部分,如果是個人錢包轉賬其實不用,我們可以在createrawtransaction設定好交易費用
小明的錢包裡面有1個位元幣,要將0.5個轉賬給小李,來吧我們幫他實現,不過小明的1個位元幣是從其他位址轉入的0.8和0.2個,沒關係我們也能幫助他轉賬首先需要先檢索小明錢包有0.5個btc沒有,我們呼叫btc提供的getbalance方法
/**
* 獲取錢包位址餘額
** @return
*/public jsonobject getbalance(string address) catch (throwable throwable)
return jsonobject;
}
檢查小明的錢包的btc是大於0.5個位元幣的,那我們接著看他錢包的沒有傳送的的交易有哪些,這個時候呼叫btc提供的listunspent 方法
/**
* object
* @param minconf
* @param maxconf
* @param address
* @param object
* @return
*/public jsonobject listunspent(int minconf, int maxconf, listaddress,object object) catch (throwable throwable)
return jsonobject;
}
檢測夏小明的錢包有兩筆unspent,通過返回的txid,和vout,scriptpubkey,amount 我們就可以建立乙個createrawtransaction
//建立的乙個輸入,txid和vout就是第二步返回的值
txinput input = new btctranscation.basictxinput(us.gettxid(), us.getvout());
/*** 需要設定找零位址資訊
* @param recipientaddress
* @param amountsend
* @param sendeaddress
* @param amountchange
* @return
*/public listcreatetxoutput(string recipientaddress,bigdecimal amountsend,string sendeaddress,bigdecimal amountchange)
備註:這裡記得一定要設定找零位址,因為小明的unsend的交易是0.8個,我們給小李要轉0.5個還剩餘0.3個,如果不設定找零位址,0.3個就預設都成為礦工費了,找零的幣是減去礦工費計算的出來的,我們可以呼叫btc的 estimatesmartfee方法簡單計算礦工費
/**
* 獲取費率資訊
* @param minconf
* @return
*/public jsonobject estimatesmartfee(int minconf) catch (throwable throwable)
return jsonobject;
}
建立一筆交易資訊,根據我們構造好輸入輸出,我們建立transaction,這個時候呼叫btc提供的createrawtransaction方法
/**
* 建立交易資訊,返回hash 值 ,傳送格式:需要計算好找零錢的資訊
** '' ''
* @param prevout
* @param out
* @return
*/public jsonobject createrawtransaction(object prevout, object out) catch (throwable throwable)
return jsonobject;
}
5.加密交易資訊,根據上一部返回的hex值,我們進行加密,這個時候呼叫btc提供的signrawtransaction方法
/**
* 交易簽名
* @param hexstring
* @return
*/public jsonobject signrawtransaction(string hexstring) catch (throwable throwable)
return jsonobject;
}
小李催著要btc了,那我們趕緊給他傳送到btc網路上吧,這個時候呼叫btc提供的sendrawtransaction方法
/**
* 傳送簽名的交易資訊
** @param hexstring
* @return
*/public jsonobject sendrawtransaction(string hexstring) catch (throwable throwable)
return jsonobject;
}
返回了乙個hex值:******xx,給小李,讓他可以在區塊瀏覽器上檢視轉賬進度了
這裡只是簡單的開發了乙個位元幣轉賬的流程,具體實際中可能會遇到各種問題,尤其是礦工費計算之類的;如果是交易所之類的轉賬,應該基本上都是簽名和傳送都是隔離的,因為簽名不需要網路,只需要賬戶的私鑰。流程上搞懂了,其實感覺也沒有那麼複雜,測試的時候直接用的是本地搭建的btc網路節點測試整個流程。
位元幣再次出現鉅額轉賬
昨晚22 00左右,btc出現一筆大額交易,3jl6fwvpgc1renstj1bjpp5ytxwuflplk8位址一次性轉出了13376.44枚btc,轉入了3ep4xywmb8u6zdmmqhfv1oypeetujwmrqv這一位址。按當時位元幣 計算,交易額逾9300萬美元。其中,3jl打頭的...
C 如何生成位元幣位址並實現轉賬
nbitcoin是.net平台上最完整的位元幣開發包,也是每乙個c 開發人員必備的位元幣開發包。nbitcoin幾乎實現了所有相關的位元幣改進提議,並且提供了對位元幣協議底層元語的訪問支援,因此你可以用nbitcoin快速地構建c 位元幣應用,例如為c 應用新增位元幣支援,或者將平台與位元幣錢包節點...
位元幣開發知識2(什麼是位元幣挖礦)
位元幣開發知識,位元幣和數字貨幣依賴p2p網路存在,位元幣和數字貨幣只能從特定演算法中產生。如果你想要獲得位元幣和數字貨幣,除了通過交易外,還能夠通過計算憑空變出位元幣 這個計算過程被稱之為 挖礦 以後你聽到有人說,我是幹挖礦的,就別以為人家只是天天蹲煤坑了,那人很有可能是擁有一堆超高配置電腦 自己...