make definition of tokens name and symbol during the deployment

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2025-06-29 14:37:27 +03:00
parent 07c752754b
commit a41cef0dfe
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB
11 changed files with 59 additions and 32 deletions

View File

@ -72,6 +72,18 @@ RESERVE_MINT_RATE=
RESERVE_TOKEN_NAME=
RESERVE_TOKEN_SYMBOL=
## Name and symbol for the base token of the ghostDAO protocol
FATSO_TOKEN_NAME=
FATSO_TOKEN_SYMBOL=
## Name and symbol for the staking token of the ghostDAO protocol
STINKY_TOKEN_NAME=
STINKY_TOKEN_SYMBOL=
## Name and symbol for the bridging token of the ghostDAO protocol
GHOST_TOKEN_NAME=
GHOST_TOKEN_SYMBOL=
SEPOLIA_TEST_RPC_URL=
SEPOLIA_TEST_API_KEY=
SEPOLIA_TEST_ENDPOINT=

View File

@ -7,9 +7,9 @@ import "./interfaces/IFTSO.sol";
import "./types/GhostAccessControlled.sol";
contract Fatso is ERC20Permit, IFTSO, GhostAccessControlled {
constructor(address _authority)
ERC20("Fatso", "FTSO")
ERC20Permit("Fatso")
constructor(address _authority, string memory name, string memory symbol)
ERC20(name, symbol)
ERC20Permit(name)
GhostAccessControlled(IGhostAuthority(_authority))
{}

View File

@ -13,7 +13,10 @@ contract Ghost is IGHST, ERC20, ERC20Permit, ERC20Votes {
address public override stnk;
address private _initializer;
constructor(address _stnk) ERC20("Ghost", "GHST") ERC20Permit("Ghost") {
constructor(address _stnk, string memory name, string memory symbol)
ERC20(name, symbol)
ERC20Permit(name)
{
stnk = _stnk;
_initializer = msg.sender;
}

View File

@ -27,7 +27,10 @@ contract Stinky is ISTNK, ERC20Permit {
mapping(address => uint256) private _shares;
mapping(address => mapping(address => uint256)) private _allowedValue;
constructor(uint256 usedIndex) ERC20("Stinky", "STNK") ERC20Permit("Stinky") {
constructor(uint256 usedIndex, string memory name, string memory symbol)
ERC20(name, symbol)
ERC20Permit(name)
{
_initializer = msg.sender;
_internalIndex = usedIndex;
_totalSupply = INITIAL_SHARES_SUPPLY;

View File

@ -16,9 +16,9 @@ contract GhostBondDepositoryTest is Test {
uint256 public constant TOTAL_INITIAL_SUPPLY = 5000000000000000;
uint256 public constant LARGE_APPROVAL = 100000000000000000000000000000000;
uint256 public constant INITIAL_INDEX = 10819917194513808e56;
uint48 public constant EPOCH_LENGTH = 2200;
uint48 public constant EPOCH_NUMBER = 1;
uint48 public constant EPOCH_END_TIME = 1337;
uint48 public constant EPOCH_LENGTH = 2200;
uint48 public constant EPOCH_NUMBER = 1;
uint48 public constant EPOCH_END_TIME = 1337;
uint256 public constant initialMint = 10000000000000000000000000;
uint256 public constant initialDeposit = 1000000000000000000000000;
@ -59,9 +59,9 @@ contract GhostBondDepositoryTest is Test {
vault
);
reserve = new ERC20Mock("Reserve Token", "RET");
ftso = new Fatso(address(authority));
stnk = new Stinky(INITIAL_INDEX);
ghst = new Ghost(address(stnk));
ftso = new Fatso(address(authority), "Fatso", "FTSO");
stnk = new Stinky(INITIAL_INDEX, "Stinky", "STNK");
ghst = new Ghost(address(stnk), "Ghost", "GHST");
staking = new GhostStaking(
address(ftso),
address(stnk),

View File

@ -47,9 +47,9 @@ contract StakingTest is Test {
policy,
vault
);
ftso = new Fatso(address(authority));
stnk = new Stinky(INITIAL_INDEX);
ghst = new Ghost(address(stnk));
ftso = new Fatso(address(authority), "Fatso", "FTSO");
stnk = new Stinky(INITIAL_INDEX, "Stinky", "STNK");
ghst = new Ghost(address(stnk), "Ghost", "GHST");
staking = new GhostStaking(
address(ftso),
address(stnk),

View File

@ -22,7 +22,7 @@ contract StakingDistributorTest is Test {
uint48 public constant EPOCH_LENGTH = 2200;
uint48 public constant EPOCH_NUMBER = 1;
uint48 public constant EPOCH_END_TIME = 1337;
uint256 public constant INITIAL_INDEX = 10819917194513808e56;
uint256 public constant amount = 69 * 1e18;
@ -47,9 +47,9 @@ contract StakingDistributorTest is Test {
owner
);
reserve = new ERC20Mock("Reserve Token", "RET");
ftso = new Fatso(address(authority));
stnk = new Stinky(INITIAL_INDEX);
ghst = new Ghost(address(stnk));
ftso = new Fatso(address(authority), "Fatso", "FTSO");
stnk = new Stinky(INITIAL_INDEX, "Stinky", "STNK");
ghst = new Ghost(address(stnk), "Ghost", "GHST");
staking = new GhostStaking(
address(ftso),
address(stnk),

View File

@ -20,6 +20,9 @@ contract FatsoTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferTe
uint256 constant amount = 69;
uint256 constant maxAmount = type(uint256).max;
string constant name = "Fatso Test Name";
string constant symbol = "FTSOTST";
function setUp() public {
authority = new GhostAuthority(
deployer,
@ -27,7 +30,7 @@ contract FatsoTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferTe
deployer,
vault
);
token = new Fatso(address(authority));
token = new Fatso(address(authority), name, symbol);
initializePermit(address(token), amount, maxAmount);
initializeAllowance(alice, bob, address(token), amount, maxAmount, amount);
initializeTransfer(alice, bob, address(token), amount, 0);
@ -48,8 +51,8 @@ contract FatsoTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferTe
}
function test_correctlyConstructsAnERC20() public view {
assertEq(token.name(), "Fatso");
assertEq(token.symbol(), "FTSO");
assertEq(token.name(), name);
assertEq(token.symbol(), symbol);
assertEq(token.decimals(), 9);
}

View File

@ -28,6 +28,9 @@ contract GhostTest is
uint256 constant amount = 69;
uint256 constant maxAmount = type(uint256).max;
string constant name = "Ghost Test Name";
string constant symbol = "GHSTTST";
Stinky stnk;
Ghost ghst;
GhostAuthority public authority;
@ -41,8 +44,8 @@ contract GhostTest is
initializer,
initializer
);
stnk = new Stinky(INITIAL_INDEX);
ghst = new Ghost(address(stnk));
stnk = new Stinky(INITIAL_INDEX, "Stinky", "STNK");
ghst = new Ghost(address(stnk), name, symbol);
staking = new GhostStaking(
address(0),
address(stnk),
@ -63,8 +66,8 @@ contract GhostTest is
}
function test_isConstructedCorrectly() public view {
assertEq(ghst.name(), "Ghost");
assertEq(ghst.symbol(), "GHST");
assertEq(ghst.name(), name);
assertEq(ghst.symbol(), symbol);
assertEq(ghst.decimals(), 18);
assertEq(ghst.staking(), address(staking));
assertEq(ghst.stnk(), address(stnk));

View File

@ -35,6 +35,9 @@ contract StinkyTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferT
uint256 constant amount = 69;
uint256 constant maxAmount = type(uint256).max;
string constant name = "Stinky Test Name";
string constant symbol = "STNKTST";
event Transfer(address indexed from, address indexed to, uint256 value);
event LogStakingContractUpdated(address stakingContract);
@ -46,9 +49,9 @@ contract StinkyTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferT
initializer,
initializer
);
ftso = new Fatso(address(authority));
stnk = new Stinky(INITIAL_INDEX);
ghst = new Ghost(address(stnk));
ftso = new Fatso(address(authority), "Fatso", "FTSO");
stnk = new Stinky(INITIAL_INDEX, name, symbol);
ghst = new Ghost(address(stnk), "Ghost", "GHST");
staking = new GhostStaking(
address(ftso),
address(stnk),
@ -67,8 +70,8 @@ contract StinkyTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferT
}
function test_isConstructedCorrectly() public view {
assertEq(stnk.name(), "Stinky");
assertEq(stnk.symbol(), "STNK");
assertEq(stnk.name(), name);
assertEq(stnk.symbol(), symbol);
assertEq(stnk.decimals(), 9);
assertEq(stnk.totalSupply(), TOTAL_INITIAL_SUPPLY);
assertEq(stnk.index(), INITIAL_INDEX / (TOTAL_SHARES / INITIAL_SHARES_SUPPLY));
@ -246,7 +249,7 @@ contract StinkyTest is Test, ERC20PermitTest, ERC20AllowanceTest, ERC20TransferT
uint256 prevIndex = stnk.index();
_mintTokens(alice, amount);
assertEq(stnk.balanceOf(alice), amount);
vm.prank(address(staking));
stnk.rebase(0, epoch);

View File

@ -35,7 +35,7 @@ contract GhostTreasuryTest is Test {
);
reserve = new ERC20Mock("Reserve Token", "RET");
liquidity = new ERC20Mock("Liquidity Token", "LDT");
ftso = new Fatso(address(authority));
ftso = new Fatso(address(authority), "Fatso", "FTSO");
treasury = new GhostTreasury(address(ftso), 69, address(authority));
calculator = new GhostBondingCalculator(address(ftso));
vm.stopPrank();