¿Qué es el contrato inteligente de depósito en garantía?

El fideicomiso es el tercero que posee el activo (el activo puede ser dinero, bonos, acciones) en presencia de dos partes. El fideicomiso liberará el fondo cuando se cumplan ciertas condiciones.
Por ejemplo, «A» es un vendedor y quiere vender su automóvil, «B» es un comprador que quiere comprar el automóvil de «A», por lo que se pondrán en contacto con el fideicomisario «C» (un árbitro) que retendrá el activo hasta » B” recibe el coche. Cuando se cumpla esta condición, el fideicomiso liberará el fondo a «A». Esto resuelve el problema de la confianza y evita cualquier discrepancia.
Permite escribir un contrato inteligente para el depósito en garantía utilizando un lenguaje de solidez. 
Aquí, el contrato inteligente retendrá el activo, que se liberará cuando se cumplan las condiciones.
 

Solidity

pragma solidity 0.6.0;     
   
// Defining a Contract
contract escrow{
  
    // Declaring the state variables
    address payable public buyer;
    address payable public seller;
    address payable public arbiter;
    mapping(address => uint) TotalAmount;
  
    // Defining a enumerator 'State'
    enum State{
         
        // Following are the data members
        awate_payment, awate_delivery, complete 
    }
  
    // Declaring the object of the enumerator
    State public state;
      
    // Defining function modifier 'instate'
    modifier instate(State expected_state){
          
        require(state == expected_state);
        _;
    }
  
   // Defining function modifier 'onlyBuyer'
    modifier onlyBuyer(){
        require(msg.sender == buyer || 
                msg.sender == arbiter);
        _;
    }
  
    // Defining function modifier 'onlySeller'
    modifier onlySeller(){
        require(msg.sender == seller);
        _;
    }
      
    // Defining a constructor
    constructor(address payable _buyer, 
                address payable _sender) public{
        
        // Assigning the values of the 
        // state variables
        arbiter = msg.sender;
        buyer = _buyer;
        seller = _sender;
        state = State.awate_payment;
    }
      
    // Defining function to confirm payment
    function confirm_payment() onlyBuyer instate(
      State.awate_payment) public payable{
      
        state = State.awate_delivery;
          
    }
      
    // Defining function to confirm delivery
    function confirm_Delivery() onlyBuyer instate(
      State.awate_delivery) public{
          
        seller.transfer(address(this).balance);
        state = State.complete;
    }
  
    // Defining function to return payment
    function ReturnPayment() onlySeller instate(
      State.awate_delivery)public{
        
         
       buyer.transfer(address(this).balance);
    }
      
}

Publicación traducida automáticamente

Artículo escrito por mukesh01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *