[区块链&DAPP介绍 Day27] Dapp 实战 留言版 -

今天来规划另一个题目区块链留言板。

留言板其实很简单,但是会比昨天的投票系统结构稍微复杂一点,我们先来看看合约该怎麽写。

我们一样先建立一个资料夹 dapp-guestbook ,然後进去资料夹里面下

truffle init

透过 truffle 把目录结构产生出来後,就可以进去 contract 资料夹,新增一个 Guestbook.sol,档案内容如下。

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.21 <0.7.0;

contract Guestbook {

    //定义一个 struct 里面会有文字、谁留言的、留言时间
    struct Item {
        string word;
        address who;
        uint when ;
    }

    //定义一个 阵列,储存上面的 item
    Item[] private allWords;

    function save(string memory s, uint t) public {
        allWords.push(Item({
            word: s,
            who: msg.sender,
            when: t
        }));
    }

    查询阵列长度
    function getSize() public view returns (uint){
        return allWords.length;
    }

    查询留言板内的内容
    function queryGusetbook(uint index) public view returns (string memory, address, uint) {
        //如果长度为0 则直接回传
        if(allWords.length==0){
            return ("", msg.sender, 0);
        }else{
            Item storage result = allWords[index];
            return (result.word, result.who, result.when);
        }
    }
}

这样我们就完成了一个留言板合约,明天我们来把剩下的 html & js 完成。


<<:  NNI如何搬到Colab01

>>:  Day 20 api介绍

JS语法学习Day5

学习目标 if判断&switch case 、取得html元素 if判断 if(条件)-&g...

应用系统的防护基准 - 委外注意事项

这年头要赚政府的钱也不容易啊 资安法要求的对象不只有公务机关,连委外的厂商也需要符合大部分的应办事项...

[DAY10]跟 Vue.js 认识的30天 - Vue 的基本模组(`component`)概念

Vue 的模组 - component 作用 Vue 的模组 component 是可以重复使用的 ...

【Day07】数据输入元件 - Slider

元件介绍 Slider 是一个滑动型输入器,允许使用者在数值区间内进行选择,选择的值可为连续值或是离...

15.移转Aras PLM大小事-Part料号全域搜寻

很常有人会问说 ㄟㄟ 怎麽不能用全域搜寻料号 这时我只能回答没有买这功能 就是原厂右上角的框框 那麽...