skka3134

skka3134

email
telegram

智能合約的gas優化:2.定長數組

在智能合約開發中,動態數組通常會消耗較多的 gas,而使用定長數組可以有效降低 gas 成本。

動態數組的賦值需要進行複製,刪除操作需要移位,這些都會增加 gas 消耗。例如:

uint[] public arr;

function f() public {
  for(uint i = 0; i < 100; i++) {
    arr.push(i); 
  }
}

相比之下,定長數組長度固定,賦值直接通過索引修改,刪除值後不需要移位。例如:

uint[100] public arr;

function f() public {
  for(uint i = 0; i < 100; i++) {
    arr[i] = i;
  }
}

因此,在長度已知或者上限可預估的情況下,使用定長數組可以減少 gas 消耗。需要注意的是,定長數組不能增加長度,如果預計可能需要擴容,仍需使用動態數組。

在智能合約優化中使用定長數組可以明顯減少 gas 成本,但需要考量業務場景是否真的需要固定長度,靈活運用動態數組和定長數組的優劣可以實現最優的 gas 使用效果。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。