A. 长安链--智能合约的开发、编译、安装、调用、查询(二)
官方参考文档: https://docs.chainmaker.org.cn/dev/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html
学习智能合约的郑唤开发,通常需要有Demo来学习API的使用方式,项目组织方式。在长安链学习过程中也是如此,所以第一步获取合约模块。
1.1) 拉取镜像: docker pull chainmakerofficial/chainmaker-go-contract:1.1.1
长安链为我们提供合约开发的镜像,内部包含合约模板。
1.2) 启动并进入容器: docker run -it --name chainmaker-go-contract -v ${PWD}:/home chainmakerofficial/chainmaker-go-contract:1.1.1 bash
启动 chainmaker-go-contract 容器并进入,同时将当前目录挂载到滚睁容器的 /home 目录下
1.3) 解压并分析合约模板
cp /home
tar xzvf contract_go_template.tar.gz
按照大丛岁官方参考文档方式 在 chainmaker-go-contract 容器中执行 ./build.sh
生成main.wasm文件
2)执行TestUserContractHash Test方法
这里使用的是默认配置文件,如果需要改变端口、连接数、TLS使能等等,需要修改 chainmaker-sdk-go/testdata/sdk_config.yml
B. solidity 智能合约(3):使用truffle编译部署及测试合约
先找源码敲一遍,跑起来,后面慢慢讲怎么用solidity编写以太坊智能合约。
这个文件编写在 contracts 目录下
这个文件在 migrations 目录下
这个文件可以创建一个 test 目录,然后放进去,我这里直接放在了根目录,不太规范。
要编译Truffle项目里的合约,请切换到项目工程所在根目录,然后在终端中键入以下内容:
首次运行时,将编译所有合约。 在后续运行中,Truffle将仅编译自上次编译以来有更改的合约。如果我们想覆盖此行为,可以使用 --all 选项运行上面的命令。
编译的目标文件 Artifacts 将放在 build/contracts/ 目录中,相对于项目根目录(如果该目录不存在,将创建该目录。)
这些 Artifacts 是Truffle内部工作的组成部分,它们在成功部署应用程序中起着重要作用。 不要去编辑这些文件,因为这些文件将被合约编译和部署覆盖。
编译成功后
迁移脚本(JavaScript文件)可帮助我们将合约部署到以太坊网络。 这些文件负责暂存我们的部署任务,并且假设我们的部署需求会随着时间的推移而发生变化。 随着项目的发展,我们将创建新的迁移脚本,以进一步推动区块链的发展。 先前运行的部署记录通过特殊的 Migrations 迁移合约记录在链上,详细信息如下。
部署命令
要运行部署,请运行以下命令:
这将部署在项目的 migrations 目录中的所有迁移文件。 最简单的迁移只是一组管理部署脚本。 如果我们的迁移先前已成功运行,则 truffle migrate 将从上次运行的迁移开始执行,仅运行新创建的迁移。 如果不存在新的迁移, truffle migrate 将不会执行任何操作。 我们可以使用 --reset 选项从头开始运行所有迁移。 对于本地测试,确保在执行 migrate 之前安装并运行了 Ganache等 测试区块链。
测试脚本中输入数值 100 ,取出的数值为 64 (这个值是16进制格式,转为十进制就是 100 ).