2018-6-1號,蓋茨實驗室籌備的全國BCH極客大賽在杭州舉辦,做爲蓋茨實驗室的技術負責人爲了給參加比賽的參賽選手(剛學習區塊鏈的)一個技術支撐和指導,下降沒有區塊鏈開發的技術難度。專門寫了一篇此次比賽的基礎技術指導文檔,此文檔不光是對參加比賽的選手有用,對剛進入區塊鏈想學習的朋友都適用。
《BCH GEEK極客大賽技術建議指導》
一.極客大賽主題和背景:區塊鏈無疑是當前最爲熱門的技術領域之一,近年來,區塊鏈技術逐漸獲得世界級金融機構和商業機構的關注,也獲得了很多政府組織的關注和扶持,很多大型銀行和機構都開展了對區塊鏈技術的研究。區塊鏈上的數據具備不可篡改,永久保存的特性,可以讓不一樣的合做夥伴創建起分佈式的信任機制。
BTC是區塊鏈的鼻祖,是區塊鏈在金融行業的首次創新應用。但隨着技術的演進和社會的需求,又新出現了很多區塊鏈的應用,好比BCH(比特幣現金)是當前各大區塊鏈社區(幣圈)最耀眼的新星,BCH在BTC的基礎上進行了一些優化,最大的改進是除開算法優化效率外,還提高了區塊的大小(目前BTC在這方面遇到了些瓶頸)。特別是在2018年5月份的升級中,BCH把OP_RETURN元數據從80字節提高到220字節,能夠存儲更多的信息(雖然目前各個機構對這個數據的擴大有爭議,但確確實實世界的領跑者永遠屬於大膽創新者)。因爲OP_RETURN的擴大,爲比特幣的二層協議開發帶來新的生機。
php
咱們先看看在比特幣的OP_RETURN上,你們都幹了些啥?有表白、求婚的。這裏比特幣就見證了一場成功的求婚:
https://blockchain.info/tx/b17a027a8f7ae0db4ddbaa58927d0f254e97fce63b7e57e8e50957d3dad2e66e
https://blockchain.info/tx/e89e09ac184e1a175ce748775b3e63686cb1e5fe948365236aac3b3aef3fedd0
2014-09-07Tetsu向其女友Yuki求婚,而其女朋友很爽快的答應了。真是虐狗虐到了比特幣上!還有許願望的,有寫家譜的。寫到鏈上後永遠不會變。
這些是利用OP_RETURN的簡單應用(經過錢包就能夠實現),若是要實現更多的功能,就須要利用api或者sdk定製開發更高級的應用。
node
基於BCH的OP_RETURN創新開發的部分應用程序:
* 「Memo」基於比特幣現金(BCH)區塊鏈平臺的社交應用於今年4月15日正式上線。在Memo中用戶基於本身的錢包地址建立本身的帳號,而後利用BCH平臺的OP_RETURN操做碼存儲各類數據和交易。
* 「幣贊」基於微博平臺的BCH(Bitcoin Cash)打賞機器人。
* 「yours」基於BCH的內容創做者的社交媒體平臺。
* 「JoyStream」一個賺BCH的BT下載軟件
以上的項目給你們是一個參考,對於競賽開發的主題方向,除開基於OP_RETURN的應用開發外,參賽團隊還能夠根據興趣選擇更多的主題,好比:1.BCH的開發工具;2.BCH協議;3.基於BCH的大數據分析等。本次舉辦BCH極客大賽的目的,是經過競賽的形式,將BCH社區的開發者連接起來,可以產生更多基於BCH的應用,提供更多的優秀解決方案。
不少開發者在學習區塊鏈的時候就蒙圈了,所涉及的知識面很廣,包括分佈式數據存儲、挖礦和共識算法、加密算法、點對點傳輸網絡等。但開發創新團隊沒有必要把底層核心所有了解後纔去作開發,掌握一些最少必要知識後就可以開發一個系統出來。這就好比用C++語言編程,開發一個應用只需掌握怎麼使用C++就好了,沒有必要去把C++的底層實現原理所有研究透。
若是創新團隊有創新想法,但對區塊鏈的知識不熟悉,也不要緊,能夠短期內掌握區塊鏈的最少必要知識,同時BCH極客大賽主辦方會提供技術支撐。如下是爲參賽選手整理的基礎知識,建議在參加比賽前就安裝好基礎環境。
二.開發環境搭建:1.BCH的源代碼能夠做爲ZIP存檔下載,也能夠從GitHub克隆權威的源代碼庫。 在GitHub比特幣頁面GitHub bitcoin-abc page上,選擇「下載ZIP」。 或者,使用git命令行在系統上建立源代碼的本地副本。
2.下載完畢後,打開DOC文檔目錄,裏面有各個操做系統(支持MAC、Windows、Openbsd、Netbsd)的安裝方法。安裝方法按照文檔(build-xxx.md)的指導步驟就好了,若是遇到失敗多數都是庫或則工具沒有裝好,能夠百度搜索解決。
3.BCH支持三種運行環境,
python
在主網上實施:節點配置時間比較久,下載數據量大,須要購買幣才能進行;
在測試網絡(Testnet)上實施:節點配置時間久,下載數據量大;
在本地區塊鏈(Regtest)上實施:不用同步數據。
參賽選手根據本身的需求選擇運行環境,本次比賽3天開發的應用不成熟,不該該立馬放到主網上。比賽主要考察參數選手的項目創新能力,爲了簡化環境和節省開發時間,建議在Regtest上運行。
自建Regtest的指導參考以下連接:
https://www.felix021.com/blog/read.php?2183
https://blog.csdn.net/chenjaulin/article/details/52449039
三.寫入OP_RETURN的方法:寫入OP_RETURN可使用createrawtransaction命令行接口或則JSON-RPC接口調用。寫入方法參考以下指導:
http://www.8btc.com/yonghengzhilian[url=https://bitcoin.org/en/developer-examples#simple-spendingAPI]https://bitcoin.org/en/developer-examples#simple-spendingAPI[/url]接口列表參考:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
四.SDK庫(僅供參考):bitcore-lib:(JavaScript庫): https://github.com/bitpay/bitcore-lib
python-bitcoinlib(python SDk庫): https://github.com/petertodd/python-bitcoinlib
btc.com比特大陸提供的接口(go SDk庫): https://github.com/cryptostu/bchapi
php-bitcoinrpc(php SDk庫): https://github.com/denpamusic/php-bitcoinrpc
bcash(node.js SDk庫): https://github.com/bcoin-org/bcash
nakasendo(C++/Java SDk庫): https://github.com/nakasendo/nakasendo
調用JSON-RPC的各類語言SDK庫參考: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
五.其餘資料:精通比特幣第二版:http://forum.gaici.com/forum.php?mod=viewthread&tid=218&extra=
develop.cash爲BCH開發者提供的文檔服務:https://develop.cash/wiki/index.php/中文首頁
六.工具:十六進制和字符串轉換:https://tool.lu/hexstr/git