首页 > 其他分享 >blockchain | 通过truffle编写合约

blockchain | 通过truffle编写合约

时间:2023-04-04 18:34:30浏览次数:57  
标签:blockchain value 目录 编写 test truffle 合约 public

blockchain | 通过truffle编写合约

有了前两篇环境搭建的基础,开始编写智能合约。(虽然部署了geth,但是truffle也有自带的私有链子环境可以用)
参考官方文档:
https://learnblockchain.cn/docs/truffle/quickstart.html#creating-a-project
以及教程:
https://www.qikegu.com/docs/4782

创建一个新目录然后:

truffle init

image

image

truffle-config.js 文件 Truffle项目配置文件,例如可以在里面配置网络。
migrations 目录 迁移文件目录,迁移文件都是javascript脚本,帮助我们把智能合约部署到以太坊。
contracts 目录 智能合约源文件目录。
test 目录 测试代码目录。

然后要添加npm包管理文件:package.json

{
  "name": "ethereum-demo",
  "version": "1.0.0",
  "description": "以太坊demo",
  "main": "truffle-config.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "dev": "lite-server",
    "test": "echo \"Error: no test specified\" && sexit 1"
  },
  "author": "[email protected]",
  "license": "ISC",
  "devDependencies": {
    "@truffle/contract": "^4.0.33",
    "dotenv": "^8.1.0",
    "lite-server": "^2.5.4",
    "truffle-hdwallet-provider": "^1.0.17"
  }
}

添加合约:

// 声明solidity版本
pragma solidity ^0.5.0;

// 声明智能合约MzContract,合约的所有代码都包含在花括号中。
contract MzContract {

    // 声明一个名为value的状态变量
    string value;

    // 合约构造函数,每当将合约部署到网络时都会调用它。
    // 此函数具有public函数修饰符,以确保它对公共接口可用。
    // 在这个函数中,我们将公共变量value的值设置为“myValue”。
    constructor() public {
        value = "hello mz";
    }

    // 本函数读取值状态变量的值。可见性设置为public,以便外部帐户可以访问它。
    // 它还包含view修饰符并指定一个字符串返回值。
    function get() public view returns(string memory ) {
        return value;
    }

    // 本函数设置值状态变量的值。可见性设置为public,以便外部帐户可以访问它。
    function set(string memory _value) public {
        value = _value;
    }
}

然后就是编译:

truffle compile

image

就报错了,应该是版本的问题。

image

image

合约的版本要和项目配置文件里的solc版本一致。

编译通过,在build文件夹中出现json文件:
image

image

教程上是这样说的:
image

标签:blockchain,value,目录,编写,test,truffle,合约,public
From: https://www.cnblogs.com/Mz1-rc/p/17287347.html

相关文章

  • 如何编写高质量的 JS 函数(2) -- 命名/注释/鲁棒篇
    vivo互联网技术微信公众号 作者:杨昆上篇《如何编写高质量的JS函数(1)--敲山震虎篇》介绍了函数的执行机制,此篇将会从函数的命名、注释和鲁棒性方面,阐述如何编写高质量的JS函数。(一)函数命名一、目前前端的函数命名存在什么问题从上图可以知道,命名和缓存是计算机科学中的......
  • C++黑马程序员——P55. 函数的分文件编写
    函数分文件编写一般有4个步骤1.创建后缀名为.h的头文件2.创建后缀名为.cpp的源文件3.在头文件中写函数的声明4.在源文件中写函数的定义 1.创建后缀名为.h的头文件右键项目的“头文件”文件夹->添加->新建项->然后中间选“头文件(.h)”,下面起个名字,添加2.......
  • 巧用ChatGPT编写万字长文的论文,纯干货实操
    文/ 韩彬 用ChatGPT写文章属于它的基本操作了,现在我们看看如何使用ChatGPT编写论文级的文章。 论文的编写步骤通常有这四步: 1、定主题 2、写提纲 3、填内容 4、改标题(可选项) 这几点其实可以运用于我们对ChatGPT的操作。 这里面有个小技巧,建议你先用英文......
  • 【测试】主流数据库存储过程编写样例(Oracle、MySQL、SQL Server)
    这个...做测试其实有时候还是需要先弄点数据才好针对某些功能进行测试的(相信做过开发的都应该深有体会)。一般像我这种老油条都推荐使用存储过程来做的初始化数据,一来脚本不会骗人,二来可以通过另一种方式验证逻辑关系。下面将整理了三个主流数据库(Oracle、MySQL和SQLServer)的“单表......
  • Rust编程语言入门之编写自动化测试
    编写自动化测试一、编写和运行测试测试(函数)测试:函数验证非测试代码的功能是否和预期一致测试函数体(通常)执行的3个操作:准备数据/状态运行被测试的代码断言(Assert)结果解剖测试函数测试函数需要使用test属性(attribute)进行标注Attribute就是一段Rust代码的元......
  • ChatGPT如何帮助编写代码文档和单元测试
    ChatGPT如何帮助编写代码文档和单元测试    有多少次你专注于编程而忘记了写函数、方法、类的非常简单的代码文档?我不是在问单元测试.直到我发现ChatGPT可以做到这一点:除了代码文档,它在编写单元测试方面也做得很好。此外,在最后,我可以要求他为其他想使用我的代码的贡献者生......
  • 请编写一个程序,使用两个线程分别输出数字和字母,要求输出的结果为:1A2B3C4D5E6F7G8H9I10
    请编写一个程序,使用两个线程分别输出数字和字母,要求输出的结果为:1A2B3C4D5E6F7G8H9I10J。提示:可以使用Java中的wait()和notify()方法来实现线程间的通信。 publicclassNumberLetterPrinter{//定义一个静态的锁对象privatestaticfinalObjectlock=newObje......
  • wxpython编写的GUI中显示gif图片的另一种方法
    当采用wx.adv.AnimationCtrl方法加载大尺寸gif图片出错的时候,就需要考虑用其他方式加载了;这里用到了imageio.v3和numpy配合加载gif图片。代码实例如下。注意的是,此代码并非gif加载全能的!当图片不规则还是会出现无法加载的情况(gif各帧之间大小不一,具体原因搞不懂);而且加载的gif图......
  • makefile 编写规则
    (一)makefile规则 一般开头都是Tab,不能空格,include前面不能是Tab;1、如果没编译过,将所有的 (.c)文件编译并且链接;2、如果有其中的(.c)文件改变,编译并链接改变的文件;3、如果(.h)文件被修改,编译引用相应的(.c)文件,链接;4、在随意修改时间的情况下,会导致编......
  • c++socket编程之客户端编写
    开头用WINAPI完成了socket客户端的编写cursor很适合用于写这种单文件的WINAPI代码编写,写的很规范,它帮助我完成了API的调用,参数的选择和异常值处理,自己去写还挺费时间但不得不吐槽下,我提的几个处理中文和处理多任务的需求,无论我换何种说法,它实现的都不太好,甚至还有错误功......