小学期算法编程实践:区块链,智能合约+web3环境搭建及简单使用

区块链新手入门菜鸟,看了很多不清不楚的博客都没有成功发布,无数error,想砸电脑,最后还是耐心看error的抛出解决问题
主要问题:npm install 安装后输入命令并不能使用

win10需要git,geth,solidity编译器solcjs,node.js,ganache-cli(testrpc)
创建账户 geth account new
账户 文件路径C:\Users\Administrator\AppData\Local\Etherem\keystor
地址0x424f2929Fbb728ee0a75ccf245b6C788BB219498
eth.getBalance(“0x424f2929Fbb728ee0a75ccf245b6C788BB219498”)查看余额

初始化创世区块
先在命令行中进入cd D:\Program Files\geth才能用geth命令或者更改环境变量在path里添加路径D:\Program Files\geth这就就可以直接使geth命令
geth init block.json --datadir test
geth --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --datadir test console

testprc(gannche-cli)测试智能合约
先进入gannche-cli目录cd C:\Users\Administrator$dir\node_modules\ganache-cli
然后运行node cli.js

solc编译先进入安装路径cd G:\solcjs$dir在运行命令就可以了
或者更改环境变量在系统变量path里添加路径C:\Users\Administrator$dir(因为这个路径下有一个solc.cmd文件,并且node.js也是默认安装在C:\Users\Administrator这所以用命令npm install 后会在路径C:\Users\Administrator$dir有你需要的cmd文件,cmd文件名就是需要用到的命令)

javascript上发布智能合约步骤
1.编译sol文件
2.启动ganache-cli会显示正在监听端口8545,默认端口8545,这个dos界面不要关闭,关了应该就不会监听了
3.调用sol写的程序
例如合约程序是两个数之和

源代码
pragma solidity ^0.5.10;

contract demo {
constructor()public{
}
function add(uint m,uint n)public returns(uint){
return m + n;
}
}
发布调试(deploy.js文件)
var Web3 = require(‘web3’)
var fs = require(‘fs’)
var web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545”))
var eth = web3.eth
var abi = JSON.parse(fs.readFileSync(“demo_sol_demo.abi”))
var code = fs.readFileSync(“demo_sol_demo.bin”)
var contract = web3.eth.contract(abi)
//var deployed = contract.new({from:eth.accounts[0],data:code,gas:470000})
//console.log(deployed.address)
var deployed = contract.new({from:eth.accounts[0],data:code,gas:470000},
function(e,contract)
{
if(contract.address){
console.log(‘address:’+contract.address)
}
}
)
在dos中进入deploy.js路径->命令node deploy.js执行
会得到账户地址:0x36e0848e6d7e4f31668a5f2d9620d41e2724a93a,每次运行地址都不一样
或者在启动ganache-cli的dos里
在这里插入图片描述
Transaction 是交易地址
contract created是创建的账户地址
调用程序源代码(diaoyong.js)
//要安装node.js
//web3版本0.20.1(npm install web3@0.20.1)
var Web3 = require(‘web3’)
var fs = require(‘fs’)
var web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545”))
var eth = web3.eth
var abi = JSON.parse(fs.readFileSync(“demo_sol_demo.abi”))
var contract = web3.eth.contract(abi)
var instance = contract.at(‘0x36e0848e6d7e4f31668a5f2d9620d41e2724a93a’)

console.log(instance.add.call(20,30))//调用,执行add(20,30)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无聊啊无聊啊啊啊啊啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值