在币安智能链上构建使用安全数据输入的dApp

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: https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg'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...

因而,咱们刚刚完成了:

  1. 分叉币安链并在本地运转

  2. 向其布置智能合约

  3. 并从中读取ETH的价格

The current price of ETH is 135462000000

恭喜!你距离获取一些币安赏金更进了一步!

更进一步

现在你现已知道怎么运用币安智能链布置智能合约,你还能够更深化地研究BSC,或许运用Matic,xDai等其他侧链以及其他二层网络。假如你更喜爱Hardhat和Truffle结构,看看是否能够在这些结构中执行ganache-cli指令并运转一些本地测验。有许多黑客松行将举办,所以一定参加这些黑客松寻求与这个领域的其他人才协作的机会,赢得一些奖项,并使自己生长为真实的智能约开发者。

假如你想继续扩展智能合约的功能,请访问Chainlink开发者文档并加入Discord中的技术评论。假如你运用币安智能链,Brownie,Truffle,Hardhat或任何其他Chainlink集成构建了不错的项目,请保证运用@chainlink符号咱们,以便咱们看到你所做的超卓的作业!

视野开拓

小资产者在已经发展了的社会中,由于自身所处的地位,必然是一方面成为社会主义者,另一方面又成为经济学者;换句话说,他既迷恋于大资产阶级的豪华,有同情人民的苦难。他同时既是资产者,又是人民。他在自己心弦深处引以为傲的,是他不偏不倚,是他找到了一个冒充为不同于中庸方法的真正均衡。这样的小资产者把矛盾予以神化,因为矛盾是他自身本性的基础。他自己无非是社会矛盾的体现。他应在理论中表现出他在实践中的本来面目-《哲学的贫困》

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注