feat: bridges, PMM, flash workflow, token-aggregation, and deployment docs
- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault. - Token-aggregation service routes, planner, chain config, relay env templates. - Config snapshots and multi-chain deployment markdown updates. - gitignore services/btc-intake/dist/ (tsc output); do not track dist. Run forge build && forge test before deploy (large solc graph). Made-with: Cursor
This commit is contained in:
54
test/compliance/CompliantMonetaryUnitTokenTest.t.sol
Normal file
54
test/compliance/CompliantMonetaryUnitTokenTest.t.sol
Normal file
@@ -0,0 +1,54 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Test} from "forge-std/Test.sol";
|
||||
import {CompliantBTC} from "../../contracts/tokens/CompliantBTC.sol";
|
||||
|
||||
contract CompliantMonetaryUnitTokenTest is Test {
|
||||
CompliantBTC public token;
|
||||
address public owner;
|
||||
address public admin;
|
||||
address public user1;
|
||||
|
||||
function setUp() public {
|
||||
owner = address(this);
|
||||
admin = address(this);
|
||||
user1 = address(0xB0B);
|
||||
token = new CompliantBTC(owner, admin, 21_000_000 * 10**8);
|
||||
}
|
||||
|
||||
function testDecimals() public view {
|
||||
assertEq(token.decimals(), 8);
|
||||
}
|
||||
|
||||
function testUnitCode() public view {
|
||||
assertEq(token.unitCode(), "BTC");
|
||||
assertTrue(token.isMonetaryUnit());
|
||||
}
|
||||
|
||||
function testInitialSupplyUsesSatoshiPrecision() public view {
|
||||
assertEq(token.totalSupply(), 21_000_000 * 10**8);
|
||||
assertEq(token.balanceOf(owner), 21_000_000 * 10**8);
|
||||
}
|
||||
|
||||
function testTransferUsesEightDecimals() public {
|
||||
uint256 amount = 12_500_000;
|
||||
token.transfer(user1, amount);
|
||||
assertEq(token.balanceOf(user1), amount);
|
||||
assertEq(token.balanceOf(owner), 21_000_000 * 10**8 - amount);
|
||||
}
|
||||
|
||||
function testPauseBlocksTransfers() public {
|
||||
token.pause();
|
||||
assertTrue(token.paused());
|
||||
vm.expectRevert();
|
||||
token.transfer(user1, 100_000_000);
|
||||
}
|
||||
|
||||
function testMintAndBurnUseSatoshiPrecision() public {
|
||||
token.mint(user1, 250_000_000);
|
||||
assertEq(token.balanceOf(user1), 250_000_000);
|
||||
token.burn(100_000_000);
|
||||
assertEq(token.balanceOf(owner), 21_000_000 * 10**8 - 100_000_000);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user