在數字化、信息化的今天,區塊鏈技術已經逐步走入各行各業。為了滿足普適性的要求,區塊鏈的應用開發理應更加簡單順手。但是我們發現目前區塊鏈應用開發仍然存在著一定門檻,社區中不斷涌現的疑問便是體現之一。
如何配置私鑰和證書?
怎么訪問區塊鏈節點?
SDK的接口怎么用?
如何構建一筆交易?
怎么解析交易回執?
……
來自開發者的疑問各式各樣,但如果開發者一直在處理這些問題,則會帶來大量的時間開銷,影響業務開發的進展。一門成熟的技術,應不斷將重復的細節封裝起來,讓開發人員更加聚焦業務,提升業務快速上線、快速試錯和快速迭代的效率。
微眾銀行自2015年深耕區塊鏈,在技術攻關和應用開發上積攢了豐富的經驗。為了讓開發者能夠在自己的業務中輕松引入區塊鏈技術,微眾銀行區塊鏈開發了區塊鏈應用開發組件WeBankBlockchain-SmartDev。其所包含的子組件——區塊鏈應用開發腳手架WebankBlockchain-SmartDev-Scaffold,更是通過一鍵生成應用項目,幫助開發者敏捷、高效地開發區塊鏈應用。
??應用開發腳手架簡介
一個典型的區塊鏈應用項目后端,可以分為三塊。業務邏輯部分由用戶自行定義;代碼部分包含了智能合約訪問的功能,例如函數入參的封裝、交易的構造和推送、鏈的訪問等;資源部分則包含了合約、ABI、BIN。如下圖所示:
Aave社區正對“如何分配Aave Grants DAO收到的30萬枚OP”提案進行投票:5月4日消息,Aave社區正對“如何分配Aave Grants DAO(AGD)收到的30萬枚OP”提案進行溫度檢查投票,該提案目前支持率為99.97%,并將于5月8日結束。根據該提案,Aave社區去年創建了一個提案并成功收到了30萬枚OP代幣,作為激勵基金OP Stimpack階段0的一部分。這些代幣將用于資助項目,以幫助Aave在Optimism上的發展。該提案旨在澄清收到的OP應如何分配并獲得社區支持。
該提案建議分配最多10萬枚OP用于當前AGD季度的贈款以及以Optimism為中心的事件和賞金,并將剩余的20萬枚OP保留在AGD多簽錢包中以用于AGD的未來季度贈款或分配。如果該提案獲得此次投票通過,AGD將按照上述方式進行資金分配。不需要AIP或進一步的治理行動。[2023/5/4 14:42:34]
應用開發腳手架組件允許用戶在寫好智能合約的基礎上,將智能合約轉換為一個SpringBoot項目,這個項目已經涵蓋了上圖中藍色和綠色的部分,用戶只需要補充自己的業務邏輯即可,不必再去關心區塊鏈訪問的細節,大大縮短了開發時間。
??關鍵特性一覽
一鍵生成
用戶在開發完智能合約后,可以將智能合約直接拖入腳手架,只要輕量配置,就可以生成相關項目。并且,生成的項目已經包含了智能合約訪問的必要邏輯。此外,該項目是SpringBoot項目,相關的配置、服務均已納入到spring容器當中。
路透社:SBF欺詐指控回避了關于美國法律如何看待加密貨幣的爭論:1月9日消息,Sam Bankman-Fried可能會發現很難辯訴應該撤銷針對他的欺詐指控,因為美國法律如何對待加密貨幣存在不確定性,就像涉及數字資產的刑事案件中其他被告一樣完成了。法律專家表示,這是因為曼哈頓聯邦檢察官對現已破產的加密貨幣交易所 FTX 創始人的指控在很大程度上回避了正在進行的關于加密貨幣是否應作為證券或商品進行監管的辯論。但據專家稱,這種不確定性與針對SBF的大部分指控無關。雖然他面臨一項串謀證券欺詐的指控,但該指控稱他誤導了FTX的股票投資者,并未涉及交易所交易資產的性質。[2023/1/9 11:02:36]
高度封裝
腳手架在生成項目時,會對合約調用邏輯做高度的封裝,用戶可以像使用ORM框架操作數據庫一樣地操作智能合約。
在生成的項目中,每個合約都被單獨封裝到一個類中,每個函數對應合約的一個函數。其輸入是java類型的輸入,輸出也是已解析的輸出。此外,對于函數的輸入參數,我們也已生成了相關的模型類,方便用戶使用。
輕量配置
用戶在將智能合約拖入腳手架后,只需做少量的涉及項目名稱、組名、合約選擇器等內容的配置即可。而且這些配置依據“契約優于配置”的原則設置了默認值,用戶可根據自己的實際需要進行調整。
合約可選
在開發具有一定復雜度的智能合約時,出于易升級、松耦合的目的,開發者通常會采用一定的手段將合約功能解耦,拆散到不同的合約中去。所以,在一組智能合約中,真正供外部訪問的合約只占少數,多數合約都僅作為功能性合約來支撐整體業務。
Poly Network攻擊者:想為Poly Network提供有關如何保護其網絡安全的提示:金色財經報道,Poly Network攻擊者再次發布了自問自答。攻擊者稱:“歸還代幣一直是計劃中的。我對金錢不是很感興趣。我知道人們受到攻擊時會很痛苦,但他們不應該從這些攻擊中學到一些東西嗎?我在午夜之前宣布了退還的決定,所以相信我的人應該好好休息。我想為Poly Network提供有關如何保護他們網絡安全的提示,以便他們在未來有資格管理這一10億美金級別的項目。 Poly Network是一個設計良好的系統,它將處理更多資產。”對此網友表示,“在午夜之前”似乎暴露了該攻擊者所處的地理區域。[2021/8/12 1:49:25]
而且,在后續應用開發時,真正需要開發的服務類也占少數。為了讓項目聚焦在所需要的合約上,開發者可配置合約選擇器,即指定所需要處理的合約,繼而腳手架只會為這些合約生成相應的代碼,避免了冗余代碼。
??如何使用
下面給一個簡單的例子,以說明腳手架的使用方法。
獲取腳手架
從gihtub或gitee獲取腳手架,以github為例:
git?clone?https://github.com/WeBankBlockchain/SmartDev-Scaffold.gitcd?tools
進入tools目錄后,可以看到它的結構:
|--tools?|??|--contracts?|??|--|HelloWorld.sol?|??|--config.ini|??|--run.sh
動態 | 各國代表在FATF開會討論如何監管虛擬資產和虛擬資產服務提供商:金色財經報道,據FATF官網消息,1月9日,各國主管開會討論了如何監督和管理虛擬資產和虛擬資產服務提供商(VASP)。自金融行動特別工作組(FATF)在2019年6月敲定這些新措施以來,這次會議是主管們首次有機會討論如何實施這些新措施。 論壇討論了三個主要領域:1.迄今為止,從那些已經建立VASP監督制度并已經開始監督VASP的國家吸取的經驗教訓。2.起草VASP法律法規時的常見問題。3.管理者有效監管VASP所需的工具、技能、程序和技術。這次會議確定了需要采取進一步行動的若干領域。這些問題將在FATF全體會議和將于2020年5月舉行的監督機構論壇的會議上進一步討論。據此前報道,2019年6月22日,FATF官網發布《基于風險的角度:監管數字資產和數字資產服務商的章程指南》,該指南將幫助各國和虛擬資產服務提供商了解其反洗錢和反恐融資義務,并有效實施FATF適用于該行業的要求。[2020/1/11]
其中:
contracts目錄用于存放solidity合約文件,腳手架后續會讀取該目錄下的合約,以生成相對應的業務工程。可刪除該目錄下的默認合約,并將自己的業務合約拷貝到該目錄下。
config.ini是啟動相關配置。
run.sh是啟動腳本。
配置腳手架
合約配置
本示例中,使用默認的HelloWorld合約。實際使用過程中,可刪除contracts目錄下的默認合約,并將自己的業務合約拷貝到該目錄下。
聲音 | 薛蠻子:行業應重點關注如何建立信任機制:著名天使投資人、UT斯達康創始人薛蠻子在“重構新生態”2018全球第五屆區塊鏈技術應用論壇上,就區塊鏈投資提到:很多散戶依靠對百倍千倍的幻想而去投資數字貨幣是非常危險的事。同時就區塊鏈監管也提到:如何在倒“洗澡水”的時候怎么又不把“澡盆里的孩子”倒出去,這是個很有技術難度的事情,也是短時間內很難實現的事。個人認為:接下來行業內胡亂“割韭菜”行為肯定行不通了,如何建立信任機制才是行業內應該去做的事情。[2018/7/26]
項目配置
可以在config.ini中做項目配置,如下:
###?項目名稱artifact=demo###?組名稱group=org.example###?所支持的合約列表,通常為空即可selector=
運行腳手架
直接啟動腳本:
chmod?x?run.sh?bash?run.sh
運行成功后,會在tools目錄下得到一個基于SpringBoot的項目工程,本示例是demo:
|--tools?|??|--demo?##?這是新生成的工程|??|--contracts
.├──?build.gradle├──?gradle│???└──?wrapper│???????├──?gradle-wrapper.jar│???????└──?gradle-wrapper.properties├──?settings.gradle└──?src????├──?main????│???├──?contracts????│???│???└──?HelloWorld.sol????│???├──?java????│???│???└──?org????│???│???????└──?example????│???│???????????└──?demo????│???│???????????????├──?Application.java????│???│???????????????├──?config????│???│???????????????│???├──?ContractConfig.java????│???│???????????????│???├──?SdkBeanConfig.java????│???│???????????????│???└──?SystemConfig.java????│???│???????????????├──?model????│???│???????????????│???├──?CommonResponse.java????│???│???????????????│???└──?bo????│???│???????????????│???????└──?HelloWorldSetInputBO.java????│???│???????????????├──?service????│???│???????????????│???└──?HelloWorldService.java????│???│???????????????└──?utils????│???│???????????????????└──?IOUtil.java????│???└──?resources????│???????├──?abi????│???????│???└──?HelloWorld.abi????│???????├──?application.properties????│???????├──?bin????│???????│???├──?ecc????│???????│???│???└──?HelloWorld.bin????│???????│???└──?sm????│???????│???????└──?HelloWorld.bin????│???????└──?conf????└──?test????????└──?java????????????├──?org????????????│???└──?example????????????│???????└──?demo????????????│???????????└──?DemoPkey.java????????????└──?org.example.demo
其中:
config目錄包含了Bean配置類。
service目錄中包含了智能合約訪問類,一個類對應一個合約。
bo目錄包含了合約函數輸入參數的封裝POJO類。
src/main/resource/conf目錄用于存放證書信息。
應用開發
生成項目工程后,可以進行DAPP開發。下面以前文所提及的demo項目工程為例進行說明。
部署合約
使用控制臺等方式部署HelloWorld合約,可得到它的地址。
證書拷貝
將配置文件拷貝到生成工程的conf目錄或src/main/resources/conf目錄下。該業務工程會自動在這些路徑下搜索證書。
配置連接節點
修改application.properties時,填寫如下信息:
system.peers=127.0.0.1:20200system.groupId=1system.certPath=src/main/resources/conf###?前述合約部署地址system.contract.helloWorldAddress=###?私鑰明文,如為空,會自動生成一個system.hexPrivateKey=server.port=8080
補全業務處理邏輯
一個完整的DAPP應包含至少三層架構。本示例補全一個Controller。但需說明的是,它僅僅是展示交易的結果。示例如下:
@("hello")public?class?HelloController?{????????}
編譯工程
進入目錄后,執行編譯:
cd?demogradle?build?-x?test
運行jar包
啟動項目后,可在瀏覽器內輸入:
http://127.0.0.1:8080/hello/set?n=hello
返回示例:
0x1c8b283daef12b38632e8a6b8fe4d798e053feb5128d9eaf2be77c324645763b
??即刻使用
上述相關代碼和技術文檔已更新,歡迎體驗和star支持。如需咨詢技術問題,歡迎關注本公眾號,對話框回復進技術交流群。
文檔地址:
https://smartdev-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-SmartDev-Scaffold/index.html
github代碼庫地址:
https://github.com/WeBankBlockchain/SmartDev-Scaffold?
gitee代碼庫地址:
https://gitee.com/WeBankBlockchain/SmartDev-Scaffold
歡迎參與WeBankBlockchain的社區建設:
如項目對您有幫助,歡迎點亮我們的小星星(點擊項目左上方Star按鈕)。
歡迎提交代碼(Pullrequests)。
提問和提交BUG。
如果發現代碼存在安全漏洞,可通過以下地址
https://security.webank.com/上報。
別想著一夜暴富成為你所追求成功的人一樣,能給予的是逃不掉的,現在的不滿意在與對自己的不信任。有幾個是一夜暴富或成為財富自由的人畢竟得很少的,只有在理性地看待,追求的東西的是有,生活是公平對待每一.
1900/1/1 0:00:00導語 數字人民幣不僅有助于改善中國現有金融支付體系的數字化水平,提升金融服務實體經濟水平,也將深刻影響我國貨幣政策、金融市場以及金融普惠性發展。當下,數字人民幣發行和落地工作正加速推進.
1900/1/1 0:00:00尊敬的用戶:Hotcoin將于(GMT8)2021年4月20日10:00開放STM充提業務,4月22日10:18開放STM/USDT交易.
1900/1/1 0:00:00親愛的用戶: AscendEX全球獨家首發Showcase(SHO)并于北京時間4月27日21:00同步開啟拍賣活動.
1900/1/1 0:00:00尊敬的用戶, 應AFIL項目方要求,WBF現已經取消AFIL/USDT最大掛單量為1000的限制,請用戶留意公告內容,調整好交易策略。如有疑問,請聯系WBF官方客服.
1900/1/1 0:00:00Gate.io將于2021年4月22日11:00上線KickPad交易。KickPAD是基于Binance智能鏈的去中心化預售和IDO平臺.
1900/1/1 0:00:00