本以太坊教程主要是介绍:搭建一个开发环境、编写编译一个智能合约。 以太坊是什么 以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化
顺晟科技
2021-06-16 10:45:53
325
今天我们就来介绍一种更快捷的方式:松露,使用松露能帮我们快速的搭建分布式应用项目,并规范项目结构,甚至松露还提供了一些入门的dapp,帮助开发者快速上手。
本文主要介绍松露提供的一个转账应用,如果需要学习更多的dapp,请移步https://truffleframework.com/boxes
准备工作:
安装节点,npm,这里就不介绍了,私有链仍然使用的是Ganache
新公共管理安装-g块菌
1、新建项目
创建目录演示激光唱片演示
新公共管理初始化
块菌拆箱工具
# 如果需要搭建宠物商店,执行这条命令
松露拆箱宠物店
执行完之后,完整的项目结构如下:
应用
index.html
剧本
指数
风格
app.css
box-img-lg.png
box-img-sm.png
大楼/智能合约编译后的内容
地图
合约
元币。数据
移民。数据
index.html
合同公司智能合约存放目录
ConvertLib.sol
元币。溶胶
移民。索尔
移民/智能合约部署信息
1_initial_migration.js
2_deploy_contracts.js
包装锁
包。数据
试验/测试文件
testmetcoin。溶胶
元币。射流研究…
松露js//松露配置
2、编译、部署
需要先启动Ganache,不然部署时连不上
块菌迁徙
# 编译成功后会显示如下内容
将工件写入。/构建/合同
使用网络"开发"。
正在运行迁移: 1 _ initial _ migration。射流研究…
部署迁移.
.0x1d 307 F4 ba 87 bb a7 bfcbd 06 ba F5 fa 8 e 2d 2e 64 A8 a 69 a 18 D8 c 56 e 277 f 36 cc 1d 1677
迁移:0x 42 b27a 0495 c 97 b 75 E3 F5 ca 6 de 5 f 45401320d 7169
保存到网络的成功迁移.
.0xf 6 d61e 8 a 6840 AC 9438 b 6 DDD 64509 f 939438 Fe 8 EB 7 fa 2 f 2283 e 2e 9 c 52 a 1639857
保存工件.
正在运行migrat : 2 _ deploy _ contracts。射流研究…
正在部署ConvertLib.
.0xb 8 c 26443 EDA 840 c BD C5 e5a 61b 11678236 B2 FEA 14 ffd 1 F8 d 9 c 2434 CDA 9 a1 ba 642
转换lib :0x 8d 8 F5 fc 48 C5 ab 607 B2 EEA 17403d 96 c 371895347 f
将转换器链接到元连接
部署元连接.
.0xc 9 a2 c 12726 cdd 0a 9160d 832 eed 092 D1 a 15 B3 a 25 a 70 DBE 8 b 8 CB 9 a 079 dedd 5a 345
元连接:0x 84 db 03 db 9 b 32 f 49 b 054502 e 86 fcfa 9552052 c 10b
保存到网络的成功迁移.
.0xc 8 f 28755 BD 1094201014 b 13 FB 1 f 7773315 E3 b 6 f1 f 46 a9 E8 e 60 b 0567597888 c 52
保存工件.
如果报这个错未指定网络。无法确定当前网络。找到块菌。js,把网络中的名称修改为发展即可,因为默认连的就是发展
module.exports={
网络: {
发展: {
主机: '127.0.0.1 ',
port: 7545,
network _ id : ' *//匹配任何网络编号
}
}
}
如果报这个错误试图运行调用合同函数的事务,删除建设目录,重新执行块菌迁徙命令
这个错误是因为编译后又修改了块菌。射流研究…中的发展,地址不对导致的
3、启动项目
新公共管理运行开发
启动成功后,打开铬浏览器http://localhost:8080/,会弹出一个错误,或者在你有自指的这个位置没显示余额,因为在app/avascripts/app.js文件中连的端口是9545,修改成7545,刷新页面就可以看到你有10000元。
需要提醒的是:不需要装元掩码,不需要装元掩码,不需要装MetaMask!
如果你装了元掩码,打开这个页面会显示你有0个META,这是因为元掩码提供了web3对象,所以根本不会连本机的http://localhost:8080/
具体代码可以查看app/avascripts/app.js,拉到文件最下方可以看到如下内容
window.addEventListener('load ',function () {
//检查浏览器是否注入了Web3(雾/元掩码)
web3!=='undefined') {
console.warn(
使用从外部来源检测到的web3 .
如果您发现您的帐户没有出现或您有0个元货币
确保您已经正确配置了该源。'
如果使用元掩码,请参见以下链接
请随意删除此警告。)'
http://truffleframework.com/tutorials/truffle-and-metamask'
)
//使用雾/元遮罩的提供者
窗户。web 3=新web 3(web 3。当前提供商)
} else {
console.warn(
未检测到web3 ."回落到http://127 .0 .0。"1:9545
当您部署活着时,您应该删除这个回退,因为它本质上是不安全的。'
考虑切换到元掩码进行开发
更多信息请点击此处: http://truffleframework.com/tutorials/truffle-and-metamask'
)
//回退-使用您的回退策略(本地节点/托管节点in-dapp id管理/失败)
窗户。Web3=新的web 3(新的web 3。提供商。http provider(' http://127。0 .0 .1:9545 '))
}
App.start()
})
所以如果你装了元掩码,就需要修改下文件,把web3对象是否存在的判断注释掉,并修改端口为7545,只保留窗户。Web3=新的web 3(新的web 3。提供商。http provider(' http://127。0 .0 .1:7545 '),具体修改如下
window.addEventListener('load ',function () {
//检查浏览器是否注入了Web3(雾/元掩码)
//if (typeof web3!=='undefined') {
//console.warn(
//"使用从外部源检测到的web3 "
//'如果您发现您的帐户没有出现或您有0个元加入,'
//'确保您已经正确配置了该源。'
//"如果使用元掩码,请参见以下链接。"
//'请随意删除此警告。)'
//' http://truffleframework.com/tutorials/truffle-and-metamask'
//)
////使用雾/元遮罩的提供者
//窗口。web 3=新web 3(web 3。当前提供商)
//} else {
//console.warn(
//'未检测到web3 ."回落到http://127 .0 .0。"1:9545
//'您应该在实时部署时删除此回退,因为它本质上是不安全的。'
//'考虑切换到元掩码进行开发'
//'更多信息请点击此处: http://truffleframework.com/tutorials/truffle-and-metamask'
//)
//回退-使用您的回退策略(本地节点/托管节点in-dapp id管理/失败)
窗户。Web3=新的web 3(新的web 3。提供商。http provider(' http://127。0 .0 .1:7545 '))
//}
App.start()
})
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06