如何通过Solidity的智能合约函数把长文章记录到以太坊区块链上?

如何通过Solidity的智能合约函数把长文章记录到以太坊区块链上?

## 1,Solidity智能合约函数 辉哥的文章 [《第十六课 不用编程,如何把长文章记录到以太坊区块链上?》](https://www.jianshu.com/p/34fa14f98c24) 是通过MetaMask的交易形式把数据写到链上。 本文提供另外一个方式,通过智能合约函数的方式把数据写到智能合约的变量区,其数据存储在storage区域,可通过函数查找出来。 合约代码: ``` pragma solidity ^0.4.24; contract LongRecord{ mapping (uint => string) pic; uint x=0; address owner; function LongRecord(){ owner = msg.sender; } function record(string s) public{ require(msg.sender == owner); pic[x]=s; x++; } function getRecord(uint i) constant public returns (string){ require(msg.sender == owner); return pic[i]; } } ``` ## 2,测试 编译成功后,切换到测试环境。 ### 2.1 部署智能合约 为了省钱,MetaMask切换到"Repston Test Network"下: ![](https://img.learnblockchain.cn/2020/02/01_/469503168.png) ### 2.2 写入长文本 假设长文本内容为 ``` 辉哥简书专栏个人IP的募集计划书: 1) 时间:2018年9月1日 - 2019年8月30日 2) 募集目标:100万彩贝通证(CLB) 3) 募集方案: 1> 投资人认同辉哥的简书专栏所产生的IP知识价值,愿意以捐献彩贝通证(CLB)的方式给辉哥提供创作动力。 2> 辉哥承诺以期间产生的简书专栏所得的50%收入按募集比例回馈给捐献者。 3> 募集信息以以太坊智能合约形式写入链上,不可篡改。 ``` 在record函数区"文本内容"填入,点击确认后会写入以太坊区块链成功。 ![](https://img.learnblockchain.cn/2020/02/01_/426592891.png) 写入成功的地址为 [https://ropsten.etherscan.io/tx/0x578cda5fccfe8465000d5ce6d966ea940b9cbd5426373a4804b238abf573d296](https://ropsten.etherscan.io/tx/0x578cda5fccfe8465000d5ce6d966ea940b9cbd5426373a4804b238abf573d296) 其第三行开始为函数输入区的UTF-8编码内容。 ![](https://img.learnblockchain.cn/2020/02/01_/668297026.png) ### 2.3 读取 输入0,点击getRecord函数,可以获得对应的文本数据内容,见下图的2. ![](https://img.learnblockchain.cn/2020/02/01_/627781066.png)

1,Solidity智能合约函数

辉哥的文章 《第十六课 不用编程,如何把长文章记录到以太坊区块链上?》 是通过MetaMask的交易形式把数据写到链上。 本文提供另外一个方式,通过智能合约函数的方式把数据写到智能合约的变量区,其数据存储在storage区域,可通过函数查找出来。

合约代码:

pragma solidity ^0.4.24;

contract LongRecord{
    mapping (uint => string) pic;
    uint x=0;
    address owner;
    function LongRecord(){
        owner = msg.sender;
    }
    function record(string s) public{
        require(msg.sender == owner);
        pic[x]=s;
        x++;
    }
    function getRecord(uint i) constant public returns (string){
        require(msg.sender == owner);
        return pic[i];
    }
}

2,测试

编译成功后,切换到测试环境。

2.1 部署智能合约

为了省钱,MetaMask切换到"Repston Test Network"下:

2.2 写入长文本

假设长文本内容为

辉哥简书专栏个人IP的募集计划书:
1) 时间:2018年9月1日 - 2019年8月30日
2) 募集目标:100万彩贝通证(CLB)
3) 募集方案:
1>  投资人认同辉哥的简书专栏所产生的IP知识价值,愿意以捐献彩贝通证(CLB)的方式给辉哥提供创作动力。
2>  辉哥承诺以期间产生的简书专栏所得的50%收入按募集比例回馈给捐献者。
3>  募集信息以以太坊智能合约形式写入链上,不可篡改。

在record函数区"文本内容"填入,点击确认后会写入以太坊区块链成功。

写入成功的地址为 https://ropsten.etherscan.io/tx/0x578cda5fccfe8465000d5ce6d966ea940b9cbd5426373a4804b238abf573d296 其第三行开始为函数输入区的UTF-8编码内容。

2.3 读取

输入0,点击getRecord函数,可以获得对应的文本数据内容,见下图的2.

  • 发表于 2018-08-21 18:23
  • 阅读 ( 2080 )
  • 学分 ( 5 )
  • 分类:以太坊

评论