区块链智能合约总结

一、Geth私链搭建和智能合约的调用

1.启动私链步骤

①创世块文件并初始化(genesis.json)

{
  "config": {
    "chainId": 168,
    "homesteadBlock": 0,
	"eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
	"byzantiumBlock": 0,
	"constantinopleBlock": 0,
	"petersburgBlock": 0
  },
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x000002",
  "extraData": "0x54686973206973206d792066697273742045746865756d20426c6f636b636861696e21",
  "gasLimit": "0xffffffff",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "alloc": {
    
  }
}

geth --datadir data init genesis.json

初始化结束后,会在目录下生产两个文件夹:

②启动私有链节点

geth --datadir "D:\Program Files\Geth\data" --rpc -rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --allow-insecure-unlock --networkid 15

建议:

自己部署私有链的过程中,ipc地址可以直接使用0.0.0.0,无论使用linux还是windows都能访问;

networkid 和 chaidID  建议设置100以下并且相同,避免java web3j调用出现异常;

私有链的搭建建议在linux上,windows上搭建不稳定,经常容易出问题,linux也比windows操作更简便。

③IPC协议接入

geth attach ipc:\\.\pipe\geth.ipc

④ RPC协议接入

geth attach ipc:http://127.0.0.1:8545

然后就可以在这个端口进行命令操作。

⑤创建账户

personal.newAccount("123456")

⑥geth的基本命令

基本命令解析:http://cw.hubwiz.com/card/c/ethereum-json-rpc-api/1/3/39/

2.调用智能合约

①创建合约对象(abi和bytecode根据remix编译所得)

此处bytecode需要手动添加“0x”,建议把两个文件复制到txt中,然后再更改后缀名为html,这样打开复制的文本不会出什么问题。

(以上没截图完,一部分)

②预估手续费

③部署合约

④创建合约对象

⑤设置默认账户

web3.eth.defaultAccount = web3.eth.accounts[0]也是设置默认账户(通过web3)

⑥验证合约是否部署成功

⑦调用合约方法

此处返回的是交易的hash值,即交易ID;

问题一直没解决,不直接返回值,返回的是交易id,和别人的有所区别,一直未解决。

由来:区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串

查看交易信息

3.linux ubuntu搭建私有链

//初始化节点
geth --datadir data0 init genesis.json

//启动
geth --identity "myethereum" --rpc --rpcaddr "0.0.0.0" --rpcport "8545" --rpccorsdomain "*" --datadir ./ --rpcapi "db,eth,net,web3,admin,personal" --nodiscover --allow-insecure-unlock --networkid 66 console


//启动其他终端连接同一个私有链
geth attach ipc:/home/tjm/Desktop/chainblock/list1/geth.ipc

二、智能合约编写

背景:区块链可以保证智能合约的不可篡改,不仅合约内容不可篡改,每次调用记录亦不可篡改;

1.需注意的用法

2.出现的问题

①开头

 

Warning:   建议添加  //SPDX-License-Identifier: UNLICENSED

②构造函数

解析:构造方法与编译版本不匹配导致

构造函数这警告会对上面调用合约造成影响,问题还为解决。

 

 

引用链接:

https://wenku.baidu.com/view/2b4dcf20001ca300a6c30c22590102020740f299.html(以太坊geth私链安装详细步骤)

https://blog.csdn.net/kevinyankai/article/details/102562562(在Geth私链上发布智能合约)

https://github.com/MaiJiantian/solidityExample(智能合约官方例子解析github)

https://mp.weixin.qq.com/s?__biz=MzA3MTI5Njg4Mw==&mid=2247485581&idx=1&sn=6a0b62212d35cb25903227e422adc4c5&chksm=9f2efa91a8597387192f4307ae1466df31f54d4440a6a24fa18993b235660735ada1e22d5b77&scene=21#wechat_redirect(区块链和智能合约讲解)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值