github.com/iotexproject/iotex-core@v1.14.1-rc1/action/protocol/execution/testdata-shanghai/datacopy.sol (about)

     1  // SPDX-License-Identifier: GPL-3.0
     2  
     3  pragma solidity ^0.8.14;
     4  
     5  contract Datacopy {
     6      bytes store;
     7  
     8      function dataCopy() public {
     9          bytes memory arr = new bytes(3);
    10          arr[0] = 0x11;
    11          arr[1] = 0x22;
    12          arr[2] = 0x33;
    13          uint256 length = arr.length;
    14          bytes memory result = new bytes(3);
    15          bool ret;
    16          assembly {
    17              // Call precompiled contract to copy data
    18              ret := staticcall(
    19                  0x10000,
    20                  0x04,
    21                  add(arr, 0x20),
    22                  length,
    23                  add(arr, 0x21),
    24                  length
    25              )
    26              returndatacopy(add(result, 0x20), 0x00, length)
    27          }
    28          updateStore(result);
    29      }
    30  
    31      function updateStore(bytes memory ret) internal {
    32          store = ret;
    33      }
    34  }