uint256 不足以满足 weis 中的数量要求吗?

Isn't uint256 enough for quantities in weis?

我制作了一个存钱罐,我希望能够进行支票。但事实证明,我无法支付超过 15 个零的款项。这正常吗?

这是我注册支票的功能:

 function setdebtor(address _address, uint _checkId, uint256  _amount) segurity public {
        check[_checkId] = _amount;
        debtor[_address] = true;

}

我的映射:

mapping(uint => uint256) check;
    mapping(address => bool) debtor;

和我的支付功能:

function paycheck(uint _check) public {
        require(debtor[msg.sender]);
        msg.sender.transfer(check[_check]);
        debtor[msg.sender] = false;

    }

但是如果我检查的金额大于 15 个零,我会收到以下错误:

transact to Hucha.setdebtor errored: Error encoding arguments: Error: invalid number value (arg="", coderType="uint256", value=30000000000000000, version=4.0.37) 
>

这是 uint256 类型的限制?

没有多大意义,因为在这个函数中我引入了带有 18 个零的数量没有问题...

 function enterFunds(uint amount) public payable {
        require(msg.value == amount);
        emit operations("Ingreso realizado de: ", amount);


    }

全部代码:

pragma solidity ^0.5.11;

contract Hucha {

    address owner;
    mapping(address => bool) debtor;
    mapping(uint => uint) check; 


    event operations(string msg, uint amount);



    modifier segurity {
        require(msg.sender == owner);
        _;
    }

    constructor() public {
        owner = msg.sender; 
    }


    function getbalance() view public returns(uint) {
        return address(this).balance;
    }

    function enterFunds(uint amount) public payable {
        require(msg.value == amount);
        emit operations("Ingreso realizado de: ", amount);


    }

     function extractFunds(uint amount) segurity public {
              msg.sender.transfer(amount);
              emit operations("Se han sacado: ", amount);

    }

    function kill() segurity public {
        selfdestruct(msg.sender);
    } 



function paycheck(uint _check) public {
        require(debtor[msg.sender]);
        require(check[_check] != 0); // si no existe el cheque devolvera cero. 
        msg.sender.transfer(check[_check]);
        debtor[msg.sender] = false;

    }

    function setdebtor(address _address, uint _checkId, uint256  _amount) segurity public {
        check[_checkId] = _amount;
        debtor[_address] = true;

    }





}

因为javascript里面的数字比较大,你可以直接在你的值"30000000000000000"后面加上双引号