博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【以太坊开发】如何开发一个编译以太坊智能合约并且发布的平台(一)
阅读量:4668 次
发布时间:2019-06-09

本文共 2183 字,大约阅读时间需要 7 分钟。

本文的目的是通过代码的方式展示如何开发一个能够编译solidity智能合约并且能发布的平台。

 

1.solcJs

solidity文件通过solc来编译的,安装solcjs,他使用javascript的方式编译合约。安装比较简单

安装solcjs:

npm install -g solc

我安装的时候默认安装的solc是0.4.8,这个版本对应的是合约头上面 pargma solidity 0.4.8;可以根据需要安装版本。

solcJs api

compiler: solcjs 提供compiler方法编译solidity合约。 使用compiler有两种情况:

1.合约没有import,即没有引用其他合约,这个方法有两个参数,一个是合约源码,一个是boolean,是否优化字节码。如果源码中包含了多个合约则全部编译

2.合约中有import。第一个参数就是一个对象,key是import的文件名称,value是对应的文件内容。所以无论何时编译器看到一个import语句,它不会在文件系统中寻找文件,而是通过与文件名匹配的键在对象中寻找文件内容。

solcjs提供了使用不同版本的solidity的方法。userVersion:

var  solc =require("solc");var solcv23 =solc.useVersion("v0.4.23.commit");

 

更新abi  因为solidity的不同版本功能导致可能不同版本编译器编译出来的abi是不同的,所以需要一个更新ABI的接口

创建部署合约平台

好了,理论讲完,进入正题。

首先启动一个geth网络:

geth --networkid 15 --dev --dev.period 1 --rpc --rpcapi "db,eth,net,web3,miner,personal,txpool"   --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcport "8545"   console 2>>log

这个命令一点要记得添加  txpool,这个后面会用到,笔者因为没有加这个折腾了好久。

项目结构:

app.js 先是定义一个普通的node服务,然后定义了两个方法:compile和deploy,编译和发布。

先贴一下前端页面index.html的代码:

            


app.js中的compile实现:

app.get("/compile", function(req, res){    var output = solc.compile(req.query.code, 1);    res.send(output);})

调用solc的compile的方法,第一个参数是solidity合约,第二个是是否优化字节码。调用res.send 返回页面做处理。

 

下一章介绍deploy相关的函数。

转载于:https://www.cnblogs.com/gzhlt/p/10035165.html

你可能感兴趣的文章
jetty;linux 目录结构
查看>>
Codeforces914D Bash and a Tough Math Puzzle
查看>>
测试,发布,质量保障,用户体验
查看>>
python格式化输出
查看>>
Leetcode 231. Power of Two
查看>>
MYSQL IFNULL函数的使用
查看>>
InvocationTargetException异常
查看>>
Python处理Excel文件
查看>>
P1250 种树
查看>>
记录一下
查看>>
Java关键字---this的由来和其三大作用
查看>>
VB 泛型 T 应用
查看>>
c# 如何调用非托管函数 (转)
查看>>
hadoop streaming怎么设置key
查看>>
Qt QDataTime QString 两个类的使用
查看>>
iOS 自带二维码扫描功能的实现
查看>>
数据库正确建立索引以及最左前缀原则
查看>>
数据库操作
查看>>
程序化交易
查看>>
AI前导课-第一课AI概览(2018/10/20)
查看>>