feat: add guarded Base Sepolia encore

This commit is contained in:
golem
2026-08-21 16:01:35 -06:00
parent 94f2ad6e09
commit 90b0a11b8a
16 changed files with 784 additions and 25 deletions
+37 -1
View File
@@ -11,9 +11,18 @@ contract TransferV2Demo is DemoScript {
}
function _run(string memory manifestPath) internal {
if (block.chainid != ANVIL_CHAIN_ID) revert UnsupportedChain(block.chainid);
_requireSupportedChain(block.chainid);
_printEducationalWarning();
Manifest memory manifest = _readManifest(manifestPath, true);
if (block.chainid == BASE_SEPOLIA_CHAIN_ID) {
_runBase(manifest);
return;
}
_runLocal(manifest);
}
function _runLocal(Manifest memory manifest) private {
(uint256 aliceKey, address alice) = _deriveLocalActor(block.chainid, 1);
address bob = manifest.actors[2].address_;
_assertAddress("Alice actor", manifest.actors[1].address_, alice);
@@ -38,4 +47,31 @@ contract TransferV2Demo is DemoScript {
_assertUint("reserves", reserves, token.balanceOf(manifest.proxy));
_assertUint("surplus", 0, token.balanceOf(manifest.proxy) - bank.totalLiabilities());
}
function _runBase(Manifest memory manifest) private {
address scriptSender = vm.envAddress("SCRIPT_SENDER");
(address presenter, address recipient,) = _requireBaseConfig(scriptSender);
_assertAddress("Presenter", manifest.actors[0].address_, presenter);
_assertAddress("Recipient", manifest.actors[1].address_, recipient);
BankV2 bank = BankV2(manifest.proxy);
MockUSDC token = MockUSDC(manifest.token);
_assertUint("version", 2, bank.contractVersion());
_assertUint("Presenter internal balance", 1_000e6, bank.balanceOf(presenter));
_assertUint("Recipient internal balance", 0, bank.balanceOf(recipient));
uint256 liabilities = bank.totalLiabilities();
uint256 reserves = token.balanceOf(manifest.proxy);
_assertUint("liabilities", 1_000e6, liabilities);
_assertUint("reserves", 1_000e6, reserves);
vm.startBroadcast(presenter);
bank.transferBalance(recipient, 250e6);
vm.stopBroadcast();
_assertUint("Presenter internal balance", 750e6, bank.balanceOf(presenter));
_assertUint("Recipient internal balance", 250e6, bank.balanceOf(recipient));
_assertUint("liabilities", liabilities, bank.totalLiabilities());
_assertUint("reserves", reserves, token.balanceOf(manifest.proxy));
_assertUint("surplus", 0, token.balanceOf(manifest.proxy) - bank.totalLiabilities());
}
}