在幣安智能鏈上構建使用安全數據輸入的dApp
2019年4月,著名加密貨幣交易所幣安(Binance)推出了幣安鏈(Binance Chain),這是一個為了快速交換資產而構建和優化的網絡,也是BNB代幣誕生的地方。在幣安鏈上你可以
發送和接收BNB代幣
發行新代幣
發送,接收,銷毀/鑄造和凍結/解凍代幣
提議在兩個不同的代幣之間創建交易對
通過鏈上創建的交易對發送買賣資產的訂單
幣安鏈非常適合這些尋求加快交易速度的用戶。但是,在設計上它並不兼容EVM,也不支持智能合約。為了能夠創建智能合約,幣安團隊還創建了幣安智能鏈(BSC),該網絡使用權益授權證明(PoSA)共識算法並且與EVM兼容,從而使智能合約開發者能夠構建可編程的dApps,且天然能與幣安鏈進行集成。
這種雙鏈架構一方面使得在資產交換端能快速交易,另一方面還支持智能合約。幣安團隊實際上創造了一個術語“CeDeFi”或者稱其為“中心化的去中心化金融”來描述這種混合方法,該方法達成了一種權衡,即在使用更少的去中心化架構以實現更大的交易吞吐量,同時仍確保開發者能以無需許可的方式部署應用程序,並且可使用以太坊中的相同的可組合工具,例如Solidity和Chainlink餵價。
二級標題一級標題
二級標題
我們將使用的工具
由於BSC與EVM兼容,我們可以使用在Solidity開發環境中會用到的相同的工具集,如Truffle,Hardhat,MetaMask等。在本教程中,我們將使用Python智能合約開發框架Brownie在BSC上開發,因為幣安測試網目前不支持Chainlink餵價,而Brownie框架具有可以在本地使用的強大的分叉鏈特性。
如果你對在幣安智能鏈上使用Truffle和Hardhat開發而不是使用Brownie感興趣,可以查看二級標題二級標題
要求
python3
nodejs
ganache-cli
brownie

入門指南
brownie的chainlink-mixbrownie的chainlink-mix。這是用於使用Chainlink智能合約的樣板模板。如果你想了解更多信息,可以在閱讀我們的博客中的如何使用python部署任何區塊鏈上的智能合約一文。要使用幣安智能鏈的主網或測試網,通常需要BNB代幣,這類似於在以太坊區塊鏈上使用ETH。部署智能合約時,需要使用BNB代幣。
我們將100%在本地完成所有工作,因此不需要任何測試網ETH,LINK或BNB等代幣即可開始。
首先,我們需要創建Brownie mix項目:
brownie bake chainlink-mixcd
chainlink
現在我們進入到項目中。如果運行ls命令,我們可以看到目錄中的內容。
build:這是項目用來跟踪已部署的智能合約和已編譯合約的文件夾
contracts:合約的源代碼,通常以Solidity或Vyper語言編寫
interfaces:和已部署合約交互所需要的接口文件夾。每次與合約的交互都需要一個ABI和合約地址。接口是用來獲取合約的ABI的好方法
scripts:我們創建的用於自動執行合約流程的腳本
tests:測試
brownie-config.yaml:這個文件為Brownie提供了理解如何對待我們的智能合約所需要的所有信息。我們想部署到什麼區塊鍊網絡?我們要設置任何特殊參數嗎?所有這些內容都在此配置文件中設置。
requirements.txt , README.md , LICENSE ,二級標題
二級標題
添加分叉網絡
為了使用幣安鏈,我們需要一個遠程過程調用(RPC)鏈接或host字段。這是一個進行API調用以連接幣安智能鏈的連接。如果感興趣,你還可以運行自己的幣安智能鏈節點並連接到該節點。
我們可以在他們的文檔中找到用於幣安鏈的RPC鏈接。我們還需要ChainID。現在,我們使用下面這些:
host=https://bsc-dataseed.binance.org/ chainid=56
最後,我們將需要具體的待使用的Chainlink餵價的合約地址。 Brownie的chainlink-mix項目預安裝了幣安ETH/USD餵價,但是如果你想要幣安上所有Chainlink餵價列表,可以查看幣安或者Chainlink文檔以獲取更多信息。查看brownie-config.yaml文件,你會在networks字段中看到名為binance-fork的部分。這裡有我們需要使用幣安分叉鏈的所有變量。
現在,我們要告訴Brownie使連接到幣安鏈,但是我們要分叉這條鏈。分叉一條鏈意味著複製該鏈並在本地運行,這樣我們就無需支付任何gas費用,並且可以快速迭代測試。但這也意味著一旦分叉鏈掉線,一切數據都將被刪除!我們可以使用以下命令將幣安鏈的一個分叉鏈添加到Brownie網絡:

這將在本地主機的端口8545上運行本地ganache-cli鏈。它將在部署時使用https://bsc-dataseed1.binance.org二級標題

二級標題
部署合約
現在一切都已設置完畢,我們可以本地ganache分叉鏈上部署和讀取合約了。在 scripts文件夾中,有一個名為deploy_price_consumer_v3.py的腳本。我們可以使用以下命令運行它:

你會看到類似下面的輸出內容

因此,我們剛剛完成了:
分叉幣安鏈並在本地運行
向其部署智能合約
二級標題
The current price of ETH is 135462000000
二級標題
更進一步
現在你已經知道如何使用幣安智能鏈部署智能合約,你還可以更深入地研究BSC,或者使用Matic,xDai等其他側鏈以及其他二層網絡。如果你更喜歡Hardhat和Truffle框架,看看是否可以在這些框架中執行ganache-cli命令並運行一些本地測試。有許多黑客松即將舉辦,所以一定參加這些黑客松尋求與這個領域的其他人才合作的機會,贏得一些獎項,並使自己成長為真正的智能約開發者。
如果你想繼續擴展智能合約的功能,請訪問Chainlink開發者文檔並加入Discord中的技術討論。如果你使用幣安智能鏈,Brownie,Truffle,Hardhat或任何其他Chainlink集成構建了不錯的項目,請確保使用@chainlink標記我們,以便我們看到你所做的出色的工作!


