位元幣轉賬功能開發

2021-10-09 02:00:16 字數 3111 閱讀 2546

和其他數字貨幣一樣,位元幣提供了我們底層的轉賬介面,當我們已經搭建完本地的節點服務,也已經大概了解了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網路存在,位元幣和數字貨幣只能從特定演算法中產生。如果你想要獲得位元幣和數字貨幣,除了通過交易外,還能夠通過計算憑空變出位元幣 這個計算過程被稱之為 挖礦 以後你聽到有人說,我是幹挖礦的,就別以為人家只是天天蹲煤坑了,那人很有可能是擁有一堆超高配置電腦 自己...