aboutsummaryrefslogblamecommitdiff
path: root/examples/multicoin/mc_test.sol
blob: ec07ee64b108430a216fd4cae50b719c5aa25eef (plain) (tree)
1
2
3
4
5
6
7
8



                                                                            
                    

                                                                      
                                                                                       


                         
                                                   
                                                                                                                   
                         
                                              

     
                                                                               
                                         




                                                                                

                                 
 
pragma solidity >=0.6.0;

contract MCTest {
    address constant MultiCoin = 0x0100000000000000000000000000000000000000;
    uint256 balance;
    constructor() public {
        // enable multi-coin functionality (it is disabled by default)
        (bool success,) = MultiCoin.call(abi.encodeWithSignature("enableMultiCoin()"));
        require(success);
    }

    function updateBalance(uint256 coinid) public {
        (bool success, bytes memory data) = MultiCoin.call(abi.encodeWithSignature("getBalance(uint256)", coinid));
        require(success);
        balance = abi.decode(data, (uint256));
    }

    function withdraw(uint256 amount, uint256 coinid, uint256 amount2) public {
        (bool success,) = MultiCoin.call(
            abi.encodeWithSignature("transfer(address,uint256,uint256,uint256)",
                                    msg.sender, amount, coinid, amount2));

        require(success);
    }

    receive() external payable {}
}