区块链智能合约总结

一、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
    评论
随着人们对食品安全和质量的关注度越来越高,农产品溯源系统逐渐成为了保障食品安全的重要手段。区块链技术作为一种新兴的去中心化技术,可以实现信息的不可篡改和公开透明,因此在农产品溯源领域有着广阔的应用前景。本文将介绍如何基于区块链技术开发农产品溯源系统,并使用智能合约实现农产品信息上链。 一、区块链技术在农产品溯源系统中的应用 区块链技术可以实现信息的不可篡改和公开透明,因此在农产品溯源领域有着广阔的应用前景。具体来说,区块链技术在农产品溯源系统中的应用主要包括以下几个方面: 1.实现信息的不可篡改 区块链技术采用去中心化的方式存储数据,每个节点都具有完整的数据副本,数据的修改需要经过共识机制的验证才能生效,因此可以实现信息的不可篡改。 2.实现信息的公开透明 区块链技术采用公开透明的方式存储数据,每个节点都可以访问到完整的数据,因此可以实现信息的公开透明。 3.提高信息的可信度 由于区块链技术可以实现信息的不可篡改和公开透明,因此可以提高信息的可信度,从而保障农产品的质量和安全。 二、农产品溯源系统的设计 农产品溯源系统的设计主要包括以下几个方面: 1.数据采集 农产品溯源系统需要采集与农产品相关的数据,包括农产品的生产、加工、存储、运输等环节的数据。数据采集可以通过传感器、RFID等物联网技术来实现。 2.数据存储 农产品溯源系统需要将采集到的数据存储到区块链上,以保证数据的不可篡改和公开透明。区块链的存储可以采用公有链或联盟链,具体根据需求来选择。 3.数据处理 农产品溯源系统需要对存储在区块链上的数据进行处理,如数据清洗、数据挖掘、数据分析等,从而提取有价值的信息。数据处理可以采用机器学习、人工智能等技术来实现。 4.数据展示 农产品溯源系统需要将处理后的数据展示给用户,以供用户查询和使用。数据展示可以采用Web界面、APP等方式来实现。 5.智能合约 农产品溯源系统需要使用智能合约来实现农产品信息的上链。智能合约可以在区块链上运行,自动执行规定的操作,从而实现农产品信息的上链和管理。 三、农产品信息上链的智能合约 智能合约是一种可以在区块链上运行的程序,可以自动执行规定的操作。在农产品溯源系统中,智能合约可以用来实现农产品信息的上链和管理。具体来说,农产品信息上链的智能合约应当具备以下几个功能: 1.农产品信息的上链 智能合约应当能够将农产品信息上链,包括农产品的生产、加工、存储、运输等环节的信息。上链的农产品信息应当包括时间戳、地点、温度、湿度、气压等信息,以便后续的查询和验证。 2.农产品信息的查询 智能合约应当能够查询存储在区块链上的农产品信息,包括农产品的生产、加工、存储、运输等环节的信息。查询的结果应当包括时间戳、地点、温度、湿度、气压等信息。 3.农产品信息的验证 智能合约应当能够验证存储在区块链上的农产品信息的真实性和完整性,以保证信息的可信度。验证的方式可以采用哈希值、数字签名等方式来实现。 4.农产品信息的管理 智能合约应当能够管理存储在区块链上的农产品信息,包括添加、删除、修改等操作。管理的权限应当根据角色进行分配,以保证信息的安全性。 四、农产品溯源系统的实现 农产品溯源系统的实现可以采用以下技术: 1.区块链技术 农产品溯源系统需要采用区块链技术来实现信息的不可篡改和公开透明。具体来说,可以采用以太坊、超级账本等区块链平台来实现。 2.物联网技术 农产品溯源系统需要采集与农产品相关的数据,可以采用传感器、RFID等物联网技术来实现。 3.智能合约技术 农产品溯源系统需要使用智能合约来实现农产品信息的上链和管理。具体来说,可以采用Solidity等智能合约语言来实现。 4.前端技术 农产品溯源系统需要将处理后的数据展示给用户,可以采用Web界面、APP等方式来实现。具体来说,可以采用Vue.js、React等前端技术来实现。 五、总结 本文介绍了如何基于区块链技术开发农产品溯源系统,并使用智能合约实现农产品信息上链。农产品溯源系统可以实现信息的不可篡改和公开透明,从而保障农产品的质量和安全。需要注意的是,在开发农产品溯源系统时,应当注重数据的真实性和公正性,避免信息的误判和误导。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值