存证合约-简单版本
存证合约的主要功能是实现⽂件元数据的存储,⽐如将⽂件存储在⽂件服务器上,将⽂件的hash存储在区块链上在业务逻辑中,能够根据⽂件hash到对应的⽂件即可。
具体代码如下:
pragma solidity ^0.4.24;
contract Register {
mapping(address => mapping(string => bytes)) registerList;
// _key:⽂件名称
// _value:值
function save(string _key, bytes _value) external {
bytes memory key;
bool isLegal =false;
(key, isLegal)= checkAndChangeKey(bytes(_key));
require(isLegal, "Key is illegal.");
//存储在⽤户⾃⼰的map中
registerList[msg.sender][string(key)]= _value;
}
function get(string _accountName, string _key) external view returns(bytes _value){
bytes memory key;
bool isLegal =false;
(key, isLegal)= checkAndChangeKey(bytes(_key));
require(isLegal, "Key is illegal.");
return registerList[msg.sender][string(key)];
}
solidityfunction checkAndChangeKey(bytes _key) private pure returns (bytes, bool){
bytes memory key = _key;
if(key.length == 0){
return(key, false);
}
for(uint256 i = 0; i < key.length; i++){
if(!(key[i]>= 33 && key[i]<= 126))return(key, false);
if(key[i]>= 65 && key[i]<= 90){
key[i]= bytes1(uint8(key[i]) + 32);
}
}
return(key, true);
}
}
在存储时,_key表⽰名字,_value表⽰值,合约会将⽤户的调⽤都存在⽤户⾃⼰的map中,这样信息就不会错乱。很简单,也很实⽤的合约,希望对⼤家有帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论