Skip to content

Instantly share code, notes, and snippets.

@gballet
Created February 25, 2022 12:08
Show Gist options
  • Save gballet/a23db1e1cb4ed105616b5920feb75985 to your computer and use it in GitHub Desktop.
Save gballet/a23db1e1cb4ed105616b5920feb75985 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract One {
function getOne() external pure returns (uint) {
return 1;
}
}
contract Two {
uint256 public copiedChunk;
constructor(bytes32 chunk) {
copiedChunk = uint256(chunk)+1;
}
}
contract Main {
One one = new One();
Two two;
constructor() {
bytes memory chunk = new bytes(0);
address one_addr = address(one);
assembly {
extcodecopy(one_addr, chunk, 0, 32)
}
two = new Two(bytes32(chunk));
}
function getChunk() external view returns (uint256) {
return two.copiedChunk();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment