以太坊 智能合約 Solidity interface的使用

以太坊網絡把在網絡上讀與寫數據進行了區分,寫數據被稱做交易(transaction),讀數據被稱做調用(call)。網絡

使用工具:remix IDE —browser-based

場景:兩個合約分別部署在不一樣的地址,相互間的調用 數據交互操做

第一個合約:Doug.sol代碼以下:app

pragma solidity ^0.4.19;
contract Doug{
    mapping (bytes32 => uint) public contracts;
    function Doug() {
        contracts['hww'] = 1;
        contracts['brian'] = 2;
        contracts['zzy'] = 7;
    }
    
    function getDougName(string _name) public view returns(string) {
        return _name;
    }
    
     function getDougAge(uint _age) public pure returns(uint) {
        return 3 ** _age;
    }
}

第二個合約 myContract.sol 代碼以下:工具

pragma solidity ^0.4.19;

contract DogInterface {
    function getDougAge(uint _age) returns (uint);
    function contracts(bytes32 name) returns (uint);
}

contract main{
    
    event FetchContract(address dogInterfaceAddress, address sender, bytes32 name);
    
    address DOUG;
    
    address dogInterfaceAddress = 0x3e6494333ae0e929ade0eb9a19fb02632b8e07cf;
    DogInterface dogContract = DogInterface(dogInterfaceAddress);
          
    function setDOUG(address _doug) {
        DOUG = _doug;
    }
    
    function dougOfage(uint _age) public view returns(uint) {
        
        uint num =  dogContract.getDougAge(_age);
        return _age+num;
        //   return num;
    }
    
    function uintOfName(bytes32 _name)  returns (uint) {
        
        dogContract.contracts(_name);
        FetchContract(dogInterfaceAddress, msg.sender, _name);
       
    }
    
    // function getTest(string _name) public view returns(string) {
    //     string memory newName = _name ;
    //     DogInterface(DOUG).getDougName(newName);
    //     return newName;
    // }
}

執行結果: 輸入圖片說明ui

相關文章
相關標籤/搜索