说明
基于以太坊区块链上的永存的留言DAPP
使用solidity开发基于truffle框架使用 truffle unbox react 脚手架部署在以太坊测试网络 Ropoetn Test Network 上(没有部署在主网,不是我看不起诸位,是我没币部署😭 )
使用
浏览安装 matemask 钱包的扩展程序,创建钱包切换至 Ropoetn Test Network 测试网络,没有币的点这里申请eth账户中有代币后,输入留言,点击确认后等待写入即可。
本地安装使用
环境: nodejs、truffle
下载至本地执行 npm i 安装依赖部署合约,不部署也可以使用(使用我已经部署的合约),不部署合约直接跳至第5步。终端当前目录下,truffle compile编译合约,接着部署合约,自行选择部署方式,参考合约部署完成后,得到合约地址,修改src/App.js中的合约地址contractAddress终端当前目录下npm start启动前端浏览器localhost:3000端口即可查看
可能存在的问题
在linux下运行项目,如果报错react-magic及aphrodite未找到,安装即可:
npm i react-magic aphrodite
智能合约源码
pragma solidity ^0.4.2;
contract Migrations {
address public owner;
uint public last_completed_migration;
modifier restricted() {
if (msg.sender == owner) _;
}
function Migrations() public {
owner = msg.sender;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) public restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}
pragma solidity ^0.4.19;
contract SimpleStorage {
struct Message {
string word; // 留言
address from; // 留言者地址
string timestamp ; // 留言unix时间戳
}
Message[] private wordArr;
function setWord(string s, string t) public {
wordArr.push(Message({
word: s,
from: msg.sender,
timestamp: t
}));
}
function getRandomWord(uint random) public view returns (uint, string, address, string) {
if(wordArr.length==0){
return (0, "", msg.sender, "");
}else{
Message storage result = wordArr[random];
return (wordArr.length, result.word, result.from, result.timestamp);
}
}
}
github地址:https://github.com/flute/blockChainWords