Warm tip: This article is reproduced from serverfault.com, please click

typescript-Typecript错误:格式无效:整数太大

(typescript - Typecript error: invalid format: Integer too large)

发布于 2020-11-27 16:34:05

我在使用Typescript的Neo One for Neo Smart Contracts框架遇到麻烦。我正在收到此错误“部署→无效格式:整数太大:66547> 65536:-32603 ”。没有行号发生此问题,并且有时似乎此错误被随机调用。

这是现在发生的行。this.orderExist()..:

public sendORDERS(orderId : Fixed<8>, actorAddress : Address){
    if(this.onlyBy(actorAddress) &&
    this.orderExist(orderId, false)){   //error
        //
        // only comments
    }
}

被调用的函数如下所示:

 @constant
public orderExist (orderId: Fixed<8>, state: boolean){
    const currentState = this.getOrderState(orderId);
    if(currentState == 0 && state == false) 
        return true;  
    else if(currentState != 0 && state == true){
        return true;
    }
    return false;
}

和getOrderState()看起来像这样:

  @constant
public getOrderState(orderId: number): Fixed<8>{
    const state = this.orderState.get(orderId);
    return state === undefined ? 0 : state;
}

有任何想法吗?我正在使用打字稿3.6.3,它应该与Neo One Framework兼容。

提前致谢。

Questioner
max123
Viewed
0
max123 2020-12-07 16:51:02

问题是我的合同太大(代码太多)。这也导致了“未知错误”。

这是智能合约的已知限制。智能合约大小(以字节码为单位)有一个硬限制,并且编译与NeoVM最大数量大小有关的大型合约也存在类似的困难。解决方法是仅在绝对必须执行的智能合约中执行逻辑在区块链上(即在NeoVM中),也可以将智能合约拆分为多个智能合约,然后彼此调用以获取不同的逻辑。

  • 斯宾塞·科温(Spencer Corwin)