主页 > imtoken正版 > 【以太坊智能合约】Embark框架开发基础

【以太坊智能合约】Embark框架开发基础

imtoken正版 2023-02-07 07:31:37

在上一篇文章中,我们了解了使用 Solidity 开发以太坊智能合约的所有基础知识。 我们使用了以太坊钱包,我们能够轻松地建立一个小型产品开发环境。 我们会发现开始很好,但是如果我们想更深入呢? 我们想要编写更大的应用程序,能够使用多个源文件。 编写、测试、调试、使用版本控制系统、一次部署多个合约等等。

为了更深入,我们将使用 Embark 框架。 Embark 框架易于上手并且具有很多特性:

目录

三、总结

1.安装Embark框架

您可以在任何平台上安装 Embark 框架,这里是您需要安装的工具。

如果你已经安装了上面的工具,我们将使用npm来安装embark框架。

localhost:~ yuechunli$  npm -g install embark ethereumjs-testrpc
/usr/local/bin/embark -> /usr/local/lib/node_modules/embark/bin/embark
/usr/local/bin/testrpc -> /usr/local/lib/node_modules/ethereumjs-testrpc/build/cli.node.js
+ ethereumjs-testrpc@4.1.3+ embark@2.5.2updated 2 packages in 42.504s
   ╭─────────────────────────────────────╮
   │                                     │
   │   Update available 5.3.05.4.2    │
   │     Run npm i -g npm to update      │
   │                                     │
   ╰─────────────────────────────────────╯localhost:~ yuechunli$ 

2. Embark framework Hello World2.1 启动server和controller

以太坊开发区块链_以太坊区块浏览器api_以太坊区块确认时间要多久

Embark 框架包含了最基本的 demo,可以用来部署,方便我们理解它是如何工作的。 打开终端,首先我们创建一个文件夹embark_demo,切换到embark_demo文件夹,使用embark demo命令创建Embark框架的初始化工程。

localhost:SmartContractDemo yuechunli$ ls
BloggerCoin	EncryptedToken	HelloWorld
localhost:SmartContractDemo yuechunli$ mkdir embark_demo
localhost:SmartContractDemo yuechunli$ cd embark_demo/
localhost:embark_demo yuechunli$ embark demo
Initializing Embark Template....
Installing packages.. this can take a few seconds
Init complete
App ready at embark_demo
-------------------
Next steps:
-> cd embark_demo
-> embark blockchain or embark simulator
open another console in the same directory and run
-> embark run
For more info go to http://github.com/iurimatias/embark-frameworklocalhost:embark_demo yuechunli$ ls
embark_demo
localhost:embark_demo yuechunli$ cd embark_demo/

以太坊区块浏览器api_以太坊开发区块链_以太坊区块确认时间要多久

localhost:embark_demo yuechunli$ ls app embark.json package.json chains.json node_modules test config package-lock.json localhost:embark_demo yuechunli$

为了运行这个demo,我们首先要通过embark simulator启动模拟器。

localhost:embark_demo yuechunli$ embark simulator
localhost:embark_demo yuechunli$ embark simulator
EthereumJS TestRPC v6.0.1 (ganache-core: 2.0.0)Available Accounts
==================(0) 0x32b083632f44917e2e9125c3025a120c97bb9f8c
(1) 0xe38af4e162a40d27c6f15e754be1a940ca6b41ab
(2) 0x19f321c2a9f531cd11b45be37ea12b835390d816
(3) 0x982eadda586d29e13b38d745d45dccd931a1b471
(4) 0xb0b4422bfdf431f58df48d0645e8d933d9c7f81d
(5) 0xd69080b8a458a3fbd3f354b16b2a5964178a2579
(6) 0x87b394b8f8d7530cd677fdb8fb785aed0431146e
(7) 0xc1da7d151ed95b616f8b67ed5ce4774525455ee0
(8) 0xa1878496046ff767401cb768e352c407c7f53018
(9) 0xd16faa875634d4fe88333555cd7dc9e8c22f3e2ePrivate Keys

以太坊区块浏览器api_以太坊区块确认时间要多久_以太坊开发区块链

==================
(0) a70c22b2e6fe5f44ca15b44883333ad551e22608953a5f16e44a8b616e151360 (1) 73a0e9cf90828d1099e5c5ac513cb18b5b804be7278aebf9bb2db5602d0e36da (2) 1e083df4a9aa021e64b52318fd64ec8d5959018b2244856466dc5ea102fa2cf8 (3) 74afaab038ec34c8ac18559a09888dbd4e057fdfa9f41e99a99bbb1fceb32bc7 (4) 3f27399b396c4d4cacfca45bffb0ce67f1f141bc5202bcd38bf66a9f8213c922 (5) 36e4b3bfab27957163165aa185fed01134d90a41d2dbaed88a9eeff7c7be4583 (6) 94292f49bd516fecd6bf775b5057cd215bb159efbc808b4cf0cf04afcd43418b (7) d9d43481879b1f130379c26df5a32ded19aabe3812e46ba52ef8b163f858ce40 (8) 61679bc6a888d5d76af56ffcfcd7383befd44032254e35272e1f227f12dd4016 (9) a8ac9f59c020136da2933424bf0f196d0a42e4a7f5d1ec8b973ff4d8c6b68a6fHD Wallet ==================Mnemonic:      soap idle agree episode breeze utility page drive dumb vibrant repeat potato Base HD Path:  m/44'/60'/0'/0/{account_index} Listening on localhost:8545**

模拟器有两个优点:

接下来,我们通过 embark run 命令重新启动一个终端来运行程序。

localhost:embark_demo yuechunli$ embark run

以太坊区块确认时间要多久_以太坊开发区块链_以太坊区块浏览器api

元素解释:

目前部署的合约和地址列表显示,Embark demo中只有一个简单的合约SimpleStorage。 SimpleStorage 合约有一个简单的任务:存储一个值并使该值从外部可读。

以太坊区块确认时间要多久_以太坊开发区块链_以太坊区块浏览器api

:8000 是当前UI前端的地址和端口。

与您的合约进行交互的控制台。

2.2 终端读取和修改storedData的值

我们用atom打开demo看看合约代码:simple_storage.sol文件在app/contracts文件夹下。

以太坊开发区块链_以太坊区块确认时间要多久_以太坊区块浏览器api

在 SimpleStorage 合约中,有一个 storedData 状态变量,用于存储一个 uint 无符号整数值。 因为我们已经启动了服务并将合约部署到本地测试网络,所以我们可以切换到终端,在终端中通过SimpleStorage.get()获取storedData的值,通过SimpleStorage修改state变量的值。 set(88)值,操作如下图:

以太坊开发区块链_以太坊区块浏览器api_以太坊区块确认时间要多久

2.3 Web端获取storedData的值

浏览项目不难发现,在app文件夹中,除了contracts文件夹外,还有css、images、js等文件夹,里面包含了与区块链交互的web app的源代码。 在浏览器中打开:8000可以看到Embarkdemo web端的效果。

注意:默认端口为8000,如果要修改端口以太坊区块浏览器api,可以在config/webserver.json文件中修改。

以太坊区块确认时间要多久_以太坊区块浏览器api_以太坊开发区块链

下图是WebApp的效果图:

以太坊区块确认时间要多久_以太坊区块浏览器api_以太坊开发区块链

默认初始值为100,如果要在网页端点击Get Value按钮获取数值,当前MetaMask钱包必须与本地区块链测试网络一致。 本地测试网络的RPC地址和端口为:localhost:8545,所以需要在MetaMask钱包中将测试网络切换为localhost:8545,然后点击Get Value按钮,获取存储在区块链上的storedData的值。 [PS:从区块链上获取价值不需要消耗gas,但是MetaMask钱包网络必须是与部署在区块链上的网络相同的测试网络。 】

2.4 在Web端点击Set Value修改storedData的值

目前在我们MetaMask的localhost:8545测试网络中,钱包地址中默认的以太币为0,如下图所示:

以太坊区块确认时间要多久_以太坊区块浏览器api_以太坊开发区块链

如果我们想通过web端的Set Value按钮修改storedData的值,我们的MetaMask账户中必须有以太坊,那么,那么,那么……

如何获得乙醚?

通过我们终端上的embark simulator启动时,会默认分配10个钱包位置以太坊区块浏览器api,每个账户的余额默认为100。 让我们先在终端中检查一下:

以太坊区块浏览器api_以太坊开发区块链_以太坊区块确认时间要多久

以太坊区块浏览器api_以太坊开发区块链_以太坊区块确认时间要多久

下一步是在我们的 MetaMask 中复制钱包地址,并在控制台上执行以下命令。

count = web3.toWei(60,'ether');
web3.eth.sendTransaction({from: '0xe38af4e162a40d27c6f15e754be1a940ca6b41ab',to: '0xF055775eBD516e7419ae486C1d50C682d4170645',value: count});

以太坊区块浏览器api_以太坊开发区块链_以太坊区块确认时间要多久

⚠️:我们在终端查询地址0xe38af4e162a40d27c6f15e754be1a940ca6b41ab的余额时,由于转账需要手续费,余额不足40 ETH。

以太坊区块浏览器api_以太坊开发区块链_以太坊区块确认时间要多久

如上图所示,0xF055775eBD516e7419ae486C1d50C682d4170645账户已经充值了60个ether。

接下来我们可以在web端调用Set Value来修改storedData的值。 我们在web端修改为520,然后在终端查看storedData的值是否被修改同步。

以太坊区块确认时间要多久_以太坊区块浏览器api_以太坊开发区块链

三、总结

本文主要是带大家初步了解Embark框架。 通过本文,相信您对Embark框架有了初步的了解,知道如何安装Embark框架环境,如何启动模拟器,如何运行程序,如何在控制台运行和Contract实例交互。

4. 参考文件 5. 技术交流

孔子学院

国内区块链职业教育领导品牌

技术交流:微信(liyc1215)

商务合作:微信(ershiyidianjian)

以太坊区块确认时间要多久_以太坊开发区块链_以太坊区块浏览器api

以太坊区块浏览器api_以太坊区块确认时间要多久_以太坊开发区块链