使用JavaScript实现智能合约demo

 "use strict"
 //声明一个类,有三个属性,相当于MVC中的Model
var DictionItem = function(text){
   if(text){
     //将字符串转换成Json字符串
   var obj = Json.para(text);
    this.key = obj.key;
    this.value = obj.value;
    this.author = obj.author;
   }else{
    this.key = "";
    this.value = "";
    this.author = "";
   }
 } ,
 //相当于MVC中的C方法,内部的方法实现将对象转化成Json字符串
DictionItem.prototype = {
  toString:function(){
    return JSON.stringify(this)
  }
}
//创建了一个类,类名字是superDiction,
 //部署一个合约会创建一个superDiction对象,通过合约地址可以找到改对象
 //合约地址可以理解成,在区块链上存储改对象的空间地址
 //每次部署合约都会产生一个新的合约对象,并且对应一个新的合约地址
 var superDiction:function(){
   //定义了一个superDiction对象的属性,属性类型为字典,对应的名字是repo
LocalContractStorage.defineMapProperty(this,"repo",{
     //相当于get方法,get读取数据的时候,会讲Json字符串转换成DictionItem对象
   parse:function(text){
   return new DictionItem(text);
   }
   //相当于set方法,put或者set方法的时候,会讲对象转换成Json对象,并且写到链上
   stringify:function(o){
    return  Json.stringify(o)
   }
   });
 }, 
  superDiction.prototype ={
  init:function(){
  }
  save:function:(key,value){
    //去掉空格
  var key = key.trim();
  var value = key.trim();
  if(key == ""||value =="")
  {
     throw new ERROR("不能为空");
  }
  if(key.length>64||key.value>64)
   throw new ERROR("长度超标");
  }
  //自动获取当前登陆钱包的地址
  var from = Blockchain.transction.from
  //根据当前的key值,或者value
   var dicItem = this.repo.get(key);
   //如果value存在,抛出异常
   if(dicItem){
   throw new ERROR("value 已经存在");
   }
   //如果没有,则创建新的DictionItem对象存储
  var dicItem = new DictionItem();
  dicItem.key = key;
  dicItem.value = value;
  dicItem.author = from;
  this.repo.put(key,dicItem);
 },
 //查询
   get: function (key) {
        key = key.trim();
        if ( key === "" ) {
            throw new Error("empty key")
        }
        return this.repo.get(key);
    }
} 
 module.exports = SuperDictionary;

github源代码

喜欢就star一下吧!👻👻👻

作者原创,转载请注明出处,如有错误描述,请评论纠正,谢谢大家!🐳🐳🐳

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦