Navigation

    GitHub中文社区
    • GitHub排行榜

    论坛

    • Login
    • Categories
    • Recent
    • Tags
    • Popular

    智能合约代码

    Github & Git
    1
    1
    102
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • renyangyang6
      renyangyang6 last edited by

      主要存放两个第三章两个方案的智能合约主要代码
      基于验证的可验证计算的智能合约主要代码
      Contrat-STSBC
      contract tlocked_servicepay {
      mapping(address =>int ) balanceOf;//余额
      address payable outsourcer;
      address payable worker;
      address payable deposit; //押金池
      enum State{Created,Remdeposited,Deposited,Confirmed, Paid,Claimed,End}
      State public state;
      uint fee;//报酬
      uint value1;//用户交的押金
      uint value2;//工人交的押金
      struct Task{
      string f; //外包任务函数
      uint D; //外包任务预期值,外包任务的数据集
      uint d; //工人对D进行哈希计算生成的值,d=H(D)
      uint q; //累加器算法随机数的哈希值q=H{b}
      uint p; //累加器算法生成的估值
      uint v; //累加器算法生成的见证
      }
      Task [] task;
      Task tmpTask;
      //用户存入押金
      function depositoutsourcer( uint d, uint z, uint c,uint value1) public {
      require(msg.sender == outsourcer);
      //检测外包用户是否有足够余额
      if (value1 >= fee){
      balanceOf[outsourcer] -= fee;
      balanceOf[deposit] += fee;
      }
      state = State.Remdeposited;
      }
      //工作节点存入押金
      function depositworker(uint q, uint p,uint value2) public {
      require(msg.sender == worker);
      tmpTask.q=q;
      //检测工作节点是否有足够余额
      if(value2 >= fee){
      balanceOf[worker] -= fee;
      balanceOf[deposit] += fee;
      }
      state = State.Deposited;
      }
      // 如果工人收到的任务有问题,发送错误的密文C1))
      function confirmTask(uint c1,uint d,uint z) public {
      require(msg.sender == worker);
      tmpTask.c1=c1;
      tmpTask.d=d;
      if(c1 != tmpTask.c|| c1 != d + z || tmpTask.c!= d + z ){
      balanceOf[deposit] -= 2*fee;
      balanceOf[worker] += fee;
      balanceOf[outsourcer] += fee;
      abort();
      }
      state = State.Confirmed;

       }
       function receiveAnswer(uint p,uint d1,uint v)public {
         require(msg.sender== outsourcer);
          tmpTask.p=p;
          tmpTask.v=v;
          tmpTask.d1=d1;
        if(d1 != tmpTask.d){
      
           balanceOf[deposit] -= 2*fee;
           balanceOf[worker] += fee;
           balanceOf[outsourcer] += fee; 
             abort(); 
        }
           state=State.Claimed;
       }
       function payworker(uint L,uint v, uint g)   public  {
        require(msg.sender == outsourcer);
         tmpTask.g=g;
          // 如果用户收到的结果有问题,发送错误的结果x和对应的见证vx
         if ( g != tmpTask.d )
         {
           balanceOf[deposit] -= 2*fee;
           balanceOf[outsourcer] += 2*fee;    
         }  
        balanceOf[deposit] -= 2*fee;
        balanceOf[worker] += 2*fee;
        state= State.Paid; 
       }
       function abort() public   {
         state= State.End;
       }            
      

      }

      基于对比的可验证计算的智能合约主要代码
      Contrat-MTSBC
      contract tlocked_servicepay {
      uint256 public value;
      mapping(address =>uint ) balanceOf;//余额
      address payable outsourcer;
      address payable worker;
      address payable deposit; //押金池
      enum State{Created,Remdeposited,Deposited,Confirmed, Paid,Claimed,End}
      State public state;
      uint fee;//报酬
      uint value1;//用户交的押金
      uint value2;//工人交的押金
      uint L;
      struct Task{
      uint f; //外包任务函数
      uint D; //外包任务预期值
      uint d; //工人对D进行哈希计算生成的值,d=H(D
      uint d1;// 用户对D进行哈希计算生成的值,d1=H(D)
      uint x; //错误解
      uint g; //错误解x的函数值f(x)的哈希值,即g=H(f(x))
      }
      Task [] task;
      Task tmpTask;
      //用户存入押金
      function depositoutsourcer( uint d, uint z, uint c,uint value1) public {
      require(msg.sender == outsourcer);
      tmpTask.d=d;
      //检测外包用户是否有足够余额
      if (value1 >= fee){
      balanceOf[outsourcer] -= fee;
      balanceOf[deposit] += fee;
      }
      state = State.Remdeposited;

       }
       //工作节点存入押金
        function depositworker(uint q, uint p,uint value2) public  {
        require(msg.sender == worker);
        //检测工作节点是否有足够余额
               if(value2 >= fee){
                 balanceOf[worker] -= fee;
                 balanceOf[deposit] += fee;
             }
              state = State.Deposited;
       }
        // 如果工人收到的任务数据有问题,发送错误的d1
       function confirmTask(uint c1,uint d,uint z) public {
             require(msg.sender == worker);
          tmpTask.d1=d1;
          if(d1 != d| ){
          balanceOf[deposit] -= 2*fee;
           balanceOf[worker] += fee;
           balanceOf[outsourcer] += fee; 
             abort();
        }
           state = State.Confirmed;
       }
       function receiveAnswer(uint m[k] )public {
         require(msg.sender== outsourcer);
       for(int k =0;0≤k≤k1;k++){
           m[k]=msg.value; 
        }
        if(m[k] != m[k+1]){
         receiveAnswer (); }
         mT=m[k];
      

      state=State.Claimed;
      }
      // 如果用户收到的结果有问题,求解mT的函数值f(x)的哈希
      值g,即g=H(f(mTx))
      function payworker(uint mT,uint v, uint g) public {
      require(msg.sender == outsourcer);
      if ( g != tmpTask.d )
      {
      balanceOf[deposit] -= 2fee;
      balanceOf[outsourcer] += 2
      fee;
      }
      balanceOf[deposit] -= 2fee;
      balanceOf[worker] += 2
      fee;
      state= State.Paid;
      }
      function abort() public {
      state= State.End;
      }
      }

      1 Reply Last reply Reply Quote 0
      • First post
        Last post