Solang 编译器在循环内发送 lamports 时失败(针对 Solana)

Solang compiler fails when sending lamports within a loop (targeting Solana)

我正在构建一个 Solana 程序来管理对多个帐户的付款,但是只要在循环中进行 .send() 调用,编译器就会失败。例如,下面的代码编译得很好:

function send( address[3] memory receivers ) external payable {
    require(payable(receivers[0]).send(uint64(5)), "Transaction failed");
}

但是下面的代码会报错:

function send( address[3] memory receivers ) external payable {
    for (uint i = 0; i < receivers.length; i++) {
      require(payable(receivers[i]).send(uint64(5)), "Transaction failed");
    }
}

LLVM ERROR: Unsupported dynamic stack allocation

我也尝试过使用 .transfer().call(),都抛出相同的错误。这种行为是否不受支持,或者我有办法解决这个问题吗?

这是 solang v0.1.9 中的一个问题。它应该可以用 solang latest main 编译得很好。

我们应该会很快发布 solang v0.1.10。