【以太坊智能合约】Embark Framework 开发基础篇

embark:使用以太坊,IPFS和其他平台的无服务器分散式应用程序框架 什么是登船 Embark是一个框架,可让您轻松开发和部署分散式应用程序(DApp)。 分散式应用程序是使用一种或多种分散式技术的无服务器html5应用程序。 Embark当前与EVM区块链(以太坊),分散式存储(IPFS)和分散式通信平台(Whisper和Orbit)集成。 支持使用Swarm进行部署。 使用Embark,您可以: 区块链(以太坊) 自动部署合同,并使其在您的JS代码中可用。 Embark监视更改,如果您更新合同,则Embark将自动重新部署合同(如果需要)和dapp。 可以在带有Promises的JS中使用合同。 使用Javascript与合同一起测试驱动开发。 跟踪已部署的合同; 仅在真正需要时部署。 管理不同的链(例如,测试网,专用网,实时网) 轻松管理相互依赖合同的复杂系统。 分散存储(IPFS,Swarm) 通过EmbarkJS轻松在DApp上存储和检索数据。 包括上传和检索文件。 将整个应用程序部署到IPFS或Swarm。 导入和部署Swarm上托管的合同。 分散通信(耳语,轨道) 通过Whisper或Orbit,通过P2P中 立即下载

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

为了更深入,我们将使用Embark框架。 Embark框架很容易上手,并具有很多功能:

  • Blockchain (Ethereum)
  • 去中心化 Storage (IPFS)
  • 去中心化交流 (Whisper, Orbit)
  • Web 技术

目录

1. 安装 Embark framework

你可以在任何平台安装Embark framework,下面是你需要安装的工具。

如果你已经安装上面的工具,我们将使用NPM来安装 embark framework。

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.2
updated 2 packages in 42.504s


   ╭─────────────────────────────────────╮
   │                                     │
   │   Update available 5.3.0 → 5.4.2    │
   │     Run npm i -g npm to update      │
   │                                     │
   ╰─────────────────────────────────────╯

localhost:~ yuechunli$ 

2. Embark framework Hello World

2.1 启动服务器和控制器

Embark framework包含最基本能够用来部署并让我们容易理解它如何运作的demo。打开终端,首先我们创建一个一个文件夹embark_demo,切换到embark_demo文件夹里面,通过embark demo命令来创建Embark framework的初始化项目。

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-framework
localhost:embark_demo yuechunli$ ls
embark_demo
localhost:embark_demo yuechunli$ cd embark_demo/
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启动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) 0xd16faa875634d4fe88333555cd7dc9e8c22f3e2e

Private Keys
==================
(0) a70c22b2e6fe5f44ca15b44883333ad551e22608953a5f16e44a8b616e151360
(1) 73a0e9cf90828d1099e5c5ac513cb18b5b804be7278aebf9bb2db5602d0e36da
(2) 1e083df4a9aa021e64b52318fd64ec8d5959018b2244856466dc5ea102fa2cf8
(3) 74afaab038ec34c8ac18559a09888dbd4e057fdfa9f41e99a99bbb1fceb32bc7
(4) 3f27399b396c4d4cacfca45bffb0ce67f1f141bc5202bcd38bf66a9f8213c922
(5) 36e4b3bfab27957163165aa185fed01134d90a41d2dbaed88a9eeff7c7be4583
(6) 94292f49bd516fecd6bf775b5057cd215bb159efbc808b4cf0cf04afcd43418b
(7) d9d43481879b1f130379c26df5a32ded19aabe3812e46ba52ef8b163f858ce40
(8) 61679bc6a888d5d76af56ffcfcd7383befd44032254e35272e1f227f12dd4016
(9) a8ac9f59c020136da2933424bf0f196d0a42e4a7f5d1ec8b973ff4d8c6b68a6f

HD 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**

simulator有两个优势:

  • 第一,它将在你的计算机上创建一个区块链(blockchain),因此当你需要部署合约或者做其他交易时,你的计算机将能够挖矿(mine)。
  • 第二,你不需要下载所有的Ethereum区块链,这样能节省你的空间。

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

localhost:embark_demo yuechunli$ embark run

embark run

元素解释:

  1. 当前部署的合约和地址列表显示在Embark演示的demo中只有一个简单的合约SimpleStorage,SimpleStorage合约具有简单的任务:存储一个值,并使这个值可从外部读取。
  2. http://localhost:8000为当前UI前端的地址和端口。
  3. 可以和你合约进行交互的控制台。

2.2 终端读取和修改storedData的值

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

Embark 演示demo

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

2.3 Web端获取storedData的值

浏览项目,不难发现,在app这个文件夹中,除了contracts文件夹外,还有css、images、js等文件夹,它们包含了和区块链交互的web app的源码。在浏览器中打开http://localhost:8000看看Embarkdemoweb端的效果。

Note:默认端口为8000,如果想修改端口可以到config/webserver.json文件里面进行修改。

下图是WebApp效果图:

默认的初始值为100,如果想在Web端点击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,如下图所示:

如果我们想在Web端通过Set Value按钮去修改storedData的值,我们的MetaMask账号里面必须得有以太币,那么,那么,那么……

如何获取以太币呢?

在我们终端中通过embark simulator启动时,会默认分配10个钱包地点,并且每个账号里面的余额都默认为100,我们在终端查询一下先:

下一步拷贝我们MetaMask里面的钱包地址,在控制台执行下面的命令。

count = web3.toWei(60,'ether');

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

⚠️:我们在终端查询0xe38af4e162a40d27c6f15e754be1a940ca6b41ab地址余额时,它比40个以太币要少一些,原因是因为转账需要花手续费。

如上图所示,0xF055775eBD516e7419ae486C1d50C682d4170645账号已充值60 ether。

接下来我们就可以在Web端调用Set Value来修改storedData的值,我们在Web端将其值修改为520,然后再在终端查看一下storedData的值是否被修改并且同步。

3. 小结

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

4. 参考文档

  • https://solidity.readthedocs.io
  • ethereumbuilders.gitbooks.io/guide/content/en/ethereum_javascript_api.html
  • web3js.readthedocs.io/en/1.0/index.html
  • https://ethereumdev.io/getting-started-with-embark-framework
  • http://embark.readthedocs.io/en/2.5.2

http://liyuechun.org/2017/11/30/embark-basic/

embark-tutorial:来自ethereum.org的embark教程 上课教程 来自ethereum.org的embark教程 乐器 npm install embark blockchain embark run 用于测试 embark spec 立即下载

相关推荐

以太坊智能合约编程(2):DApp框架,工具以及工作流程

第二部分. DApp框架,工具以及工作流程DApp开发框架虽然有上文提到的工具就可以进行开发了,但是使用社区大神们创造的框架会让开发更容易。Truffle and Embark. 是Truffle把我领进了门。在Truffle出现之前的那个夏天,我目睹了一帮有天分的学生是如何不眠不休的参加一个hackathon(编程马拉松)活动的,虽然结果相当不错,但我还是吓到了。然后Truffle出现了,帮你处理掉大量无关紧要的小事情,让你可以迅速进入写代码-编译-部署-测试-打包DApp这个流程。另外一个相似的DApp构建与测试框架是Embark。我只用过Truffle, 但是两个阵营都拥有不少DApp大

区块链部件代码分析

主程序nodes类中包含以下函数建立新的交易行为向tx池中加入交易信息向known_tx表中加入id号广播交易给所有结点receiver其他用户结点接收交易信息以及区块广播当前结点已记录交易信息则pass如果没有,则添加id号,data数据等信息广播给其他用户结点并记录广播结点与其他结点的延迟调用receiver创建区块block交易从txpool中pop到pendingpool中交易结束后,将其作为新的信息迭代到哈希值中在block列表首部插入最新的block。

Hopeace的博客 1610

MobaXterm终端工具个人学习版安装包及常用配置备份

资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。

ns3网络仿真_4个开源的区块链仿真器「科研/毕设必备工具」

随着比特币、以太坊的成功,区块链技术得到了广泛的关注并 被尝试用于更多的场景,但是这些网络的特性并没有得到充分 的研究。本文将介绍几种区块链网络仿真器,可用于在区块链科研与 毕业设计中探索大规模区块链网络的特征、性能、技术指标以及节点 间的交互行为。以太坊教程链接: Dapp入门 | 电商Dapp实战 | ERC721实战 | Php对接 | Java对接 | Python对接 | C#对接 | ...

weixin_39603588的博客 1881

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 245

Embark 开源项目使用教程

Embark 开源项目使用教程 1. 项目的目录结构及介绍 Embark 项目的目录结构如下: embark/ ├── docs/ │ ├── README.md │ └── ... ├── src/ │ ├── main.py │ ├── config.py │ └── ... ├── tests/ │ ├── test_main.py │ └── ... ├── ....

gitblog_01028的博客 542

S32K144驱动TPS929120避坑实录:从原理图设计到PWM调光漏电流的完整解决流程

本文详细解析了S32K144驱动TPS929120在车规LED驱动中的常见问题与解决方案,重点解决了PWM调光漏电流的行业难题。从原理图设计、FlexWire通信到软件调试,提供了一套完整的工程化避坑指南,特别针对车规MCU应用中的温度漂移、地址冲突等痛点给出了实用建议。

weixin_30872157的博客 561

区块链仿真工具SimBlock使用

区块链仿真工具SimBlock基本使用

关关的博客 2019

ArcGIS中地理坐标系与投影坐标系以及投影转换

简单介绍arcgis软件中坐标系定义、设置和常见问题。

weixin_41399650的博客 8万+

关于影响力最大化问题中贪心算法的一些理解

在影响力最大化问题中(Influence Maximization,以下简称IM),贪心算法是最早提出的一种解决方法,并且一直沿用至今。它基于IM问题所具有的单调性(Monotonicity)和子模性(Submodularity)使用一种Hill Climbing策略,不断使用Monte Carlo模拟来寻找在当前情况下的具有最大传播范围的节点,添加至种子集合,得到最终结果,算法伪代码如下所示: 这里算法1其实并没有使用MonteCarlo模拟,而只是使用了贪心的策略...

nianjuan1990的专栏 2852

Embark 开源项目教程

Embark 项目的目录结构如下: ``` embark/ ├── README.md ├── LICENSE ├── src/ │ ├── main.py │ ├── config.py │ └── utils/ │ ├── helper.py │ └── logger.py ├── tests/ │ ├── test_main.py │ └── t...

gitblog_00629的博客 409

buildozer

/home/chenyang/new_kivy/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/Lib

东方佑 16万+

Embark以太坊毕业设计开发框架

Embark 是什么 和广泛使用的 Truffle 类似,Embark 也是一个功能强大的 DApp 开发框架,帮助开发者快速构建和部署 DApp。Embark 不单可以与以太坊区块链通信,还集成了 IPFS/Swarm 去中心化存储和 Whisper 网络通信功能。 Embark 由 Status 团队开发,Status 旨在构建以太坊操作系统,除了 Embark 框架外,其产品还包含:即强大的时加密通信工具 Status.IM,以太坊 2.0 轻节点项目 Nimbus, 开源硬件钱包 KeyCard。

674

YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 1823

【深度学习新浪潮】如何上手DINO v3:Meta新一代视觉大模型实战指南

自定义数据集类(适配本地/公开数据集)# 去除batch维度# 构建数据加载器# 定义分类模型(冻结预训练层,仅训练分类头)self.classifier = nn.Linear(dino_model.config.hidden_size, num_classes) # 分类头global_feat = outputs.global_attention_pool # 取全局特征# 初始化模型# 冻结预训练层(仅训练分类头)# 定义损失函数和优化器。

专注:太空算力、AI infra、异构调度、大模型成本工程 491

终极指南:如何快速搭建Web3开发环境 - Awesome Web3推荐的IDE与测试工具精选

如果你正在寻找最完整的Web3开发环境搭建指南,那么你来对地方了!Awesome Web3是一个精心整理的Web3资源、库和工具集合,为开发者提供了最全面的Web3开发环境配置方案。本文将为你详细介绍如何快速搭建高效的Web3开发环境,并推荐最佳的IDE和测试工具,让你在区块链开发领域事半功倍!🚀 ## 🛠️ Web3开发环境搭建的核心工具 Awesome Web3项目为我们整理了一系列优

gitblog_00582的博客 390

畅游Diffusion数字人(0):专栏文章导航

畅游Diffusion数字人(0):专栏文章导航

沉迷单车的追风少年 1421

Embark 环境搭建

Embark 环境搭建 Truffle和Embark是目前以太坊Dapp开发社区中比较流行的两款开发框架,本文介绍Embark的环境搭建与使用过程。 作者:ZY 环境要求 安装geth1.5.8以上版本 Node.js 6.9.1以上版本,Node.js的安装一定要注意,不能用apt-get安装。否则安装到的版本过低,会导致Embark无法启动。安装可以采用如下方式: 下载Node.j

about_blockchain的博客 1292

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

以太坊开发入门,完整入门

翻译自:https://medium.com/@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe从入门到精通,干货篇。必读,如果你:是一个专业的程序员如果你想了解以太坊当前可以做到什么程度,通过什么,如何做到。预备知识:    1. 你需要知道区块链的概念及实现一个无需信任的电子货币的运作原理。可以先看看长版(https://www.y

架构文摘 8084

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

干货|以太坊全景介绍及入门学习路径(分享实录)

本次分享主要是针对以太坊的基本概念的介绍,属于入门级别,主要目的是帮助大家快速认识和了解以太坊。 自我介绍 大纲 1 交易所那些事儿 要谈到加密货币就没办法避开交易所,在我看来交易所其实是现在加密货币市场的一个最大的毒瘤。举两个实例来看。3月加密货币市场有两个大新闻:3月7日,某交易所自称被黑客攻击,很多账户遭受资金损失;3月底,另一个大的交易所号称某些账户做了一笔达到46万个比特币的恶意交...

weixin_34166472的博客 303

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

区块链应用开发入门

很多人想运用区块链,都找不到突破口,应该学习哪些知识和技术呢,应该用什么样的区块链呢?这篇文章为你解读。

Elwin随心博客 6万+

以太坊智能合约编程之菜鸟教程

手把手带你走上智能合约编程之路 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件。本文的翻译获得了ConsenSys创始人Lubin先生的授权。 有些人说以太坊太难对付,于是我们(译注:指Consensys, 下同)写了这篇文章来帮助大家学习如何利用以太

陈建慧程序人生 9万+

Embark开发框架 based on ethereum and IPFS

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34187822的博客 404

简单几步,轻松搞定智能合约快速开发

参加 2018 AI开发者大会,请点击 ↑↑↑智能合约是链接区块链底层技术与应用的桥梁。近日,以“区块链核心技术及DApp开发”为主题的优快云区块链技术沙龙在成都天府软...

区块链大本营 4252

从 NEAR Intents 事件看 NEAR 智能合约安全

2026年9月29日至10月1日,攻击者利用NEAR Intents存款退款处理中的校验缺陷,通过填充代币和恶意receiver合约触发超额退款请求,使回调失败后内部余额未被撤销,造成缺乏资产支持的可花费余额。攻击者据此从BNB Chain上的HOT Bridge金库七笔提现共转出3,865,021 USDT。项目方于10月2日部署修复、10月7日移除存款通知功能,并于同日宣布资金全额归还,后续事后报告确认受影响用户已获补偿。

BlockSec的博客 262
上一篇: 在區塊鏈上建立可更新的智慧合約(二)
下一篇: 【IPFS + 区块链 系列】 入门篇 - IPFS环境配置
Omni-Space
博客等级 码龄11年 2158粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值