2019年4月,著名加密貨幣交易所幣安(Binance)推出了幣安鏈(Binance Chain),這是一個為了快速交換資產而構建和優化的網路,也是BNB代幣誕生的地方。在幣安鏈上你可以:
發送和接收BNB代幣
發行新代幣
發送,接收,銷毀/鑄造和凍結/解凍代幣
提議在兩個不同的代幣之間創建交易對
通過鏈上創建的交易對發送買賣資產的訂單
幣安鏈非常適合這些尋求加快交易速度的用戶。但是,在設計上它並不兼容EVM,也不支持智能合約。為了能夠創建智能合約,幣安團隊還創建了幣安智能鏈(BSC),該網路使用權益授權證明(PoSA)共識演算法並且與EVM兼容,從而使智能合約開發者能夠構建可編程的dApps,且天然能與幣安鏈進行集成。
這種雙鏈架構一方面使得在資產交換端能快速交易,另一方面還支持智能合約。幣安團隊實際上創造了一個術語「CeDeFi」或者稱其為「中心化的去中心化金融」來描述這種混合方法,該方法達成了一種權衡,即在使用更少的去中心化架構以實現更大的交易吞吐量,同時仍確保開發者能以無需許可的方式部署應用程序,並且可使用以太坊中的相同的可組合工具,例如Solidity和Chainlink喂價。
幣安智能鏈Chainlink喂價可在幣安主網上使用,且能用於在幣安智能鏈(BSC)上構建需要去中心化的,防篡改的數據輸入的應用程序。在本技術教程中,我們將闡述如何使用幣安智能鏈,BNB代幣和Chainlink預言機,即使你沒有以太坊開發經驗,也能夠學會如何快速開始在幣安智能鏈(BSC)上構建外部連接的智能合約。
使用BSC開發
我們將使用的工具
由於BSC與EVM兼容,我們可以使用在Solidity開發環境中會用到的相同的工具集,如Truffle,Hardhat,MetaMask等。在本教程中,我們將使用Python智能合約開發框架Brownie在BSC上開發,因為幣安測試網目前不支持Chainlink喂價,而Brownie框架具有可以在本地使用的強大的分叉鏈特性。
如果你對在幣安智能鏈上使用Truffle和Hardhat開發而不是使用Brownie感興趣,可以查看ganache-cli的分叉鏈功能,或者跳到我們談論分叉的地方–我們將介紹如何在ganache上運行。事實上,我們在測試時,Brownie在後端使用的正是ganache-cli分叉。
要求
python3
nodejs
ganache-cli
brownie
檢查Python版本,終端中輸入:
python --version
對於nodejs,輸入:
node -v
可以在點擊文本下載python和nodejs。Node預先安裝有npm。然後通過下面的命令確保安裝ganache-cli:
npm install -g ganache-cli
或者
yarn global add ganache-cli
最後,用下面的命令安裝Brownie:
pip install eth-brownie
或者:
pip3 install eth-brownie
現在我們一切就緒!
入門指南
現在我們已經完成了所有設置,繼續拆箱brownie的chainlink-mix。這是用於使用Chainlink智能合約的樣板模板。如果你想了解更多信息,可以在閱讀我們的博客中的如何使用python部署任何區塊鏈上的智能合約一文。
要使用幣安智能鏈的主網或測試網,通常需要BNB代幣,這類似於在以太坊區塊鏈上使用ETH。部署智能合約時,需要使用BNB代幣。
我們將100%在本地完成所有工作,因此不需要任何測試網ETH,LINK或BNB等代幣即可開始。
首先,我們需要創建Brownie mix項目:
brownie bake chainlink-mix
cd chainlink
現在我們進入到項目中。如果運行ls命令,我們可以看到目錄中的內容。
build:這是項目用來跟蹤已部署的智能合約和已編譯合約的文件夾
contracts:合約的源代碼,通常以Solidity或Vyper語言編寫
interfaces:和已部署合約交互所需要的介面文件夾。每次與合約的交互都需要一個ABI和合約地址。介面是用來獲取合約的ABI的好方法
scripts:我們創建的用於自動執行合約流程的腳本
tests:測試
brownie-config.yaml:這個文件為Brownie提供了理解如何對待我們的智能合約所需要的所有信息。我們想部署到什麼區塊鏈網路?我們要設置任何特殊參數嗎?所有這些內容都在此配置文件中設置。
requirements.txt , README.md , LICENSE , 以及 .gitignore 等文件現在可以忽略。你將在練習過程中了解它們的用途。
我們將把PriceFeed.sol部署到我們的本地環境中,該環境將從幣安主鏈中分叉得到。
添加分叉網路
為了使用幣安鏈,我們需要一個遠程過程調用(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網路:
brownie networks add development binance-fork cmd=ganache-cli host=http://127.0.0.1 fork=https://bsc-dataseed1.binance.org accounts=10 mnemonic=brownie port=8545
這將在本地主機的埠8545上運行本地ganache-cli鏈。它將在部署時使用https://bsc-dataseed1.binance.org作為分叉源。如果操作正確,你將看到類似下面的內容:
Brownie v1.13.0 - Python development framework for Ethereum
SUCCESS: A new network 'binance-fork' has been added
└─binance-fork
├─id: binance-fork
├─cmd: ganache-cli
├─cmd_settings: {'fork': 'https://bsc-dataseed1.binance.org', 'accounts': 10, 'mnemonic': 'brownie', 'port': 8545}
└─host: http://127.0.0.1
你可以運行brownie networks list來檢查所有網路。
部署合約
現在一切都已設置完畢,我們可以本地ganache分叉鏈上部署和讀取合約了。在 scripts文件夾中,有一個名為deploy_price_consumer_v3.py的腳本。我們可以使用以下命令運行它:
brownie run scripts/price_feed_scripts/deploy_price_consumer_v3.py --network binance-fork
你會看到類似下面的輸出內容:
Brownie v1.13.0 - Python development framework for Ethereum
ChainlinkMixProject is the active project.
Launching 'ganache-cli --accounts 10 --fork https://bsc-dataseed1.binance.org --mnemonic brownie --port 8545 --hardfork istanbul'...
Running 'scripts/price_feed_scripts/deploy_price_consumer_v3.py::main'...
Transaction sent: 0x63022ee6c741ffb31ec6f8f29d3d2412c0a81a557a316a9a9752603825b8e96d
Gas price: 0.0 gwei Gas limit: 6721975 Nonce: 0
PriceFeed.constructor confirmed - Block: 4398765 Gas used: 132364 (1.97%)
PriceFeed deployed at: 0x3194cBDC3dbcd3E11a07892e7bA5c3394048Cc87
The current price of ETH is 135462000000
Terminating local RPC client...
因此,我們剛剛完成了:
分叉幣安鏈並在本地運行
向其部署智能合約
並從中讀取ETH的價格
The current price of ETH is 135462000000
恭喜!你距離獲取一些幣安賞金更進了一步!
更進一步
現在你已經知道如何使用幣安智能鏈部署智能合約,你還可以更深入地研究BSC,或者使用Matic,xDai等其他側鏈以及其他二層網路。如果你更喜歡Hardhat和Truffle框架,看看是否可以在這些框架中執行ganache-cli命令並運行一些本地測試。有許多黑客松即將舉辦,所以一定參加這些黑客松尋求與這個領域的其他人才合作的機會,贏得一些獎項,並使自己成長為真正的智能約開發者。
如果你想繼續擴展智能合約的功能,請訪問Chainlink開發者文檔並加入Discord中的技術討論。如果你使用幣安智能鏈,Brownie,Truffle,Hardhat或任何其他Chainlink集成構建了不錯的項目,請確保使用@chainlink標記我們,以便我們看到你所做的出色的工作!
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2021/05/23/%e5%9c%a8%e5%b8%81%e5%ae%89%e6%99%ba%e8%83%bd%e9%93%be%e4%b8%8a%e6%9e%84%e5%bb%ba%e4%bd%bf%e7%94%a8%e5%ae%89%e5%85%a8%e6%95%b0%e6%8d%ae%e8%be%93%e5%85%a5%e7%9a%84dapp/?variant=zh-tw
文章評論