Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
156 commits
Select commit Hold shift + click to select a range
a46a3aa
replaced deal token by erc721
Oct 19, 2022
2610dbe
Update IERC20Extented.sol
Oct 19, 2022
4b87dfe
refactoring
Oct 24, 2022
7a49684
logic update
Oct 25, 2022
126657f
Update AelinUpFrontDeal.t.sol
Oct 28, 2022
11be2d7
merge conflicts resolved
Oct 28, 2022
015d64d
Update AelinUpFrontDeal.t.sol
Oct 28, 2022
47c9816
Update AelinUpFrontDeal.sol
Nov 14, 2022
9672e6a
fix createVestingToken
Nov 14, 2022
03916e8
PR fixes
Nov 16, 2022
e314f2d
added more tests
Nov 18, 2022
25ce551
backup
Nov 24, 2022
7f11e0d
updates added
Dec 1, 2022
8ea30cb
Merge pull request #114 from AelinXYZ/deal-token-transfer-pool
Jan 8, 2023
61ebcf5
new file added
Jan 10, 2023
989c513
init
Jan 11, 2023
bb4ebbf
Merge branch 'deal-token-transfer' into tests-refactoring
Jan 11, 2023
03a8cb5
Update AelinUpFrontDeal.t.sol
Jan 12, 2023
5d687a6
update
Jan 18, 2023
a958a4e
Update AelinUpFrontDeal.t.sol
Jan 23, 2023
a3c983d
Update AelinUpFrontDeal.t.sol
Jan 25, 2023
c46f122
Update AelinUpFrontDeal.t.sol
Jan 27, 2023
a607130
First tests
Jan 23, 2023
bef5b12
basic tests
Jan 24, 2023
e049697
test events
Jan 25, 2023
74b476e
Foundry Best Practices - Imports
Jan 30, 2023
d2b3b8d
Foundry Best Practices - Tests order
Jan 30, 2023
8d32c83
Foundry Best Practices - Tests naming
Jan 30, 2023
e9a9645
Foundry Best Practices - assertEq
Jan 30, 2023
fce2518
Foundry Best Practices - expectEmit
Jan 30, 2023
29ae9f1
improved naming
Jan 30, 2023
102593d
removed upper limit and use SafeMath.try + assume
Jan 30, 2023
b52ad5d
Merge pull request #119 from AelinXYZ/refactor/AelinFeeEscrowTest
Jan 30, 2023
97f7847
update
Jan 30, 2023
78eba52
Merge branch 'tests-refactoring' of https://github.com/AelinXYZ/aelin…
Jan 30, 2023
d7bf0ac
AelinTestUtils contract added
Jan 31, 2023
124c89c
Delete AelinUpFrontDealOld.t.soll
Jan 31, 2023
ccc9124
Merge pull request #121 from AelinXYZ/test-fee-escrow
Jan 31, 2023
1e79ab0
Update AelinFeeEscrow.t.sol
Jan 31, 2023
8771a00
test update
Feb 6, 2023
108ee77
update
Feb 10, 2023
0b8ed66
AelinUpFrontDeal tests OK
Mar 1, 2023
4731b5b
Update AelinFeeEscrow.t.sol
Mar 1, 2023
79a229f
DelegateVouch removed
Mar 1, 2023
5935e4a
AelinPool test init
Mar 2, 2023
d2cb45b
renamed Aelin Pool test
Mar 2, 2023
bb721d9
Update AelinDeal.t.sol
Mar 8, 2023
463c43b
update
Mar 14, 2023
6a11cf8
Update AelinDeal.t.sol
Mar 14, 2023
d92dd36
Update MerkleTree.sol
Mar 15, 2023
c4950bf
AelinDeal test ok
Mar 15, 2023
fe07a44
cleanup
Mar 15, 2023
7084e8d
cleanup
Mar 15, 2023
29a9183
removed locked modifier
Mar 16, 2023
7d0d799
cleanup
Mar 16, 2023
3ce0526
merkle fix
Mar 17, 2023
5371015
typo fix
Mar 21, 2023
f63262d
set VESTING_PERIOD to 0 + adapt tests (#129)
0xlinus Mar 23, 2023
c30fa11
[Deal token transfer Bug] Bug if vestingPeriod == 0 (#127)
0xlinus Mar 23, 2023
88b0095
distribution script
Mar 24, 2023
5c4fe68
Removed decimals restriction + fix tests + added tests
0xlinus Mar 23, 2023
d6b8a71
added polygon deployed contracts + hardhat config
Mar 24, 2023
ecba213
Merge pull request #132 from AelinXYZ/feature/add-polygon
Mar 27, 2023
a062fe9
Merge pull request #131 from AelinXYZ/feature/remove-decimals-limitation
Mar 27, 2023
b20126d
Merge pull request #130 from AelinXYZ/fee-distribution-script
Mar 27, 2023
8831165
added initialize
Mar 3, 2023
f113f2a
added purchasePoolTokens
Mar 3, 2023
01f0258
added purchasePoolTokensWithNft (flaky)
Mar 7, 2023
476a616
Solved flaky tests
Mar 7, 2023
182fbab
follow testing file structure approach + update AelinTestUtils
Mar 8, 2023
2e9b3f9
rebased + solved conflicts
Mar 21, 2023
1f4960b
addressed PR suggestions
Mar 27, 2023
563fd10
follow testing file structure approach + update AelinTestUtils
Mar 8, 2023
6338869
added initialize
Mar 3, 2023
d95604c
follow testing file structure approach + update AelinTestUtils
Mar 8, 2023
511872e
added tests
Mar 16, 2023
27ba85f
solved conflicts
Mar 16, 2023
4f670cc
added acceptDeal and misc functions
Mar 20, 2023
3d71ce4
added transfer, set/accept sponsor and sponsorClaim tests
Mar 21, 2023
5b814a4
solved conflicts
Mar 21, 2023
082db4b
fixed typos + added extra tests + fixed flaky test
Mar 27, 2023
be510d1
follow testing file structure approach + update AelinTestUtils
Mar 8, 2023
fabea99
tests added
Mar 21, 2023
232a598
tests added (#128)
0xlinus Mar 23, 2023
739b0e6
removed old tests file
Mar 27, 2023
4e8b49d
tests added
Mar 27, 2023
e48893c
Merge pull request #133 from AelinXYZ/refactor/AelinUpFrontDealFactor…
Mar 28, 2023
bcafa00
Merge pull request #126 from AelinXYZ/refactor/AelinPoolFactory.t.sol
Mar 28, 2023
bf16d3e
Merge pull request #125 from AelinXYZ/refactor/AelinPool-2.t.sol
Mar 28, 2023
3e769cc
Merge pull request #122 from AelinXYZ/refactor/AelinPool.t.sol
Mar 28, 2023
5df14e1
tests cleanup
Mar 28, 2023
593d1e2
add Aelin multisigs to the list of contracts deployed (#134)
alextheboredape Mar 28, 2023
b1490f6
removed event renaming
Mar 30, 2023
1a3e76d
event enhancement and bug fixes
Apr 3, 2023
9f424e2
fix for decimal bug
Apr 4, 2023
46ca990
remove revert when nothing to claim
Apr 4, 2023
8548496
remove revert when nothing to claim in upfrontdeals
Apr 4, 2023
9c5bf54
burn token logic
Apr 4, 2023
6b30208
setHolder event added
Apr 4, 2023
67f15a0
testFuzz_PurchaserClaim_FullRefund fuzzed
Apr 4, 2023
a701800
testFuzz_PurchaserClaim_NoDeallocation fuzzed
Apr 5, 2023
aa21f90
testFuzz_ClaimableUnderlyingTokens_DuringVestingPeriod
Apr 5, 2023
6df0c30
testFuzz_ClaimableUnderlyingTokens_AfterVestingPeriod fuzzed
Apr 5, 2023
4ab3f6c
Update AelinDeal.sol
Apr 6, 2023
6bf4dd3
removed wallet can only logic
0xCooki Apr 9, 2023
fd2e3bf
removed purchaseAmountPerToken from NftCollectionRules
0xCooki Apr 9, 2023
33d6e0c
removed per token logic from getPunksCollection in utils
0xCooki Apr 9, 2023
cf2d6c5
removed legacy per wallet logic
0xCooki Apr 10, 2023
e2382e1
rectify error in AelinPool.sol
0xCooki Apr 11, 2023
533e9fe
clean up
0xCooki Apr 11, 2023
92767ac
added require clause to AelinPool for purchase amount equal to zero f…
0xCooki Apr 13, 2023
e9f7892
added analagous logic to gating contract and removed unnecessary if b…
0xCooki Apr 13, 2023
45c0554
short error strings
0xCooki Apr 13, 2023
d7cc38e
moved require purchase amt 0 for 1155 to init method
0xCooki Apr 14, 2023
250c4b5
clean up
0xCooki Apr 17, 2023
ca94220
Merge pull request #146 from CookedCookee/bounty#140
Apr 17, 2023
f2726a1
fix merge issue
Apr 17, 2023
aa677e0
Update historical-stakers-distribution.js
Apr 17, 2023
4d68ee5
Update audit_lint_build.yml
Apr 17, 2023
0d94add
fix critical npm audit
Apr 17, 2023
45c6d38
Merge pull request #135 from AelinXYZ/audit-fix
Apr 20, 2023
77a237a
Merge pull request #151 from AelinXYZ/tests-refactoring
Apr 20, 2023
f5993d6
Merge pull request #137 from AelinXYZ/aelinUpFrontDeal-fuzzed-tests
Apr 20, 2023
6a4236a
cleanup ok
Apr 21, 2023
2dfb02e
Update .yarnrc.yml
Apr 21, 2023
9a6f2d1
Update audit_lint_build.yml
Apr 21, 2023
b7f679f
Update audit_lint_build.yml
Apr 21, 2023
1ae82cf
prettier config
Apr 21, 2023
7eece48
Update audit_lint_build.yml
Apr 21, 2023
e53c982
Merge pull request #154 from AelinXYZ/repo-cleanup
Apr 25, 2023
52ebdb1
contract updates
Apr 27, 2023
3f66069
Update merkle-tree-generator.js
Apr 27, 2023
196be4c
Update MerkleFeeDistributor.t.sol
Apr 27, 2023
d52f36c
added withdraw function
Apr 28, 2023
3888b09
Merge pull request #160 from AelinXYZ/merkle-tree-2
May 2, 2023
69ef9df
cleanup
May 5, 2023
78d20fd
Merge pull request #165 from AelinXYZ/repo-cleanup-2
May 9, 2023
9296e66
test fixes
May 15, 2023
cb01a0d
withdrawExpiry fix
May 23, 2023
c7b032b
withdraw logic updated
May 25, 2023
a4d29cc
AelinPool - Add SponsorClaim event
May 30, 2023
e7a7c29
fixed variable name
Jun 5, 2023
10ec73c
Add claimableUnderlyingTokensMultipleEntries on AelinDeal and AelinUp…
Jun 15, 2023
abd9d94
rename variable
Jun 15, 2023
7d6bc6a
Add tests for sponsor claim event
Jun 15, 2023
def5627
Merge pull request #172 from AelinXYZ/withdraw-fix
Jun 21, 2023
68c380d
Merge pull request #179 from AelinXYZ/add/sponsor-claim-event
Jun 22, 2023
bf5575e
Merge pull request #180 from AelinXYZ/add/claimableUnderlyingTokensMu…
Jun 22, 2023
97841c5
add multicall (#189)
alextheboredape Jun 30, 2023
e00bbfa
SwapNFT contract
Aug 15, 2023
e402126
Update SwapNFT.sol
Aug 15, 2023
80137c6
Update SwapNFT.sol
Sep 1, 2023
fda69bf
Create AelinBurner.sol
Sep 11, 2023
4e18b1d
update logic of burn and swap
alextheboredape Sep 11, 2023
8c530f1
Update AelinBurner.sol
Sep 11, 2023
7331566
Merge pull request #196 from AelinXYZ/burn-nft
alextheboredape Sep 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 17 additions & 177 deletions .github/workflows/audit_lint_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,73 +3,32 @@ name: Aelin CI
on:
push:
pull_request:
branches: [main, dev, dev-fork, aelip-19]
branches: [main, dev]

jobs:
audit:
# run only on main/dev branch and pull requests
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || github.event_name == 'pull_request'
runs-on: ubuntu-latest

container:
image: synthetixio/docker-sec-tools:16.17-alpine

steps:
- name: Checkout
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # pin@v2

- name: Audit dependencies
run: npm audit --audit-level=critical

- name: Lockfile lint
run: lockfile-lint -p package-lock.json --type npm --allowed-hosts npm --allowed-schemes "https:" "npm:"
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "18"
cache: "yarn"
- run: yarn install --immutable --immutable-cache --check-cache

lint:
needs: audit
# run only on audit success or audit skipped
if: always() && (needs.audit.result == 'success' || needs.audit.result == 'skipped')
runs-on: ubuntu-latest

container:
image: synthetixio/docker-node:16.17-alpine

steps:
- name: Checkout
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # pin@v2

- name: Set npm cache directory
run: npm config set cache .npm-cache --global
continue-on-error: true

- uses: actions/cache@c64c572235d810460d0d6876e9c705ad5002b353 # pin@v2
with:
path: |
.npm-cache
node_modules
key: ${{ runner.os }}-alpine-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-alpine-node-
continue-on-error: true

# fixes permission issues on gh actions + docker + npm@8
- name: Chown workspace
run: chown -R $(whoami) .

# mkdir -p node_modules fixes https://github.com/npm/cli/issues/3208 starting from npm@7
- name: Install dependencies
run: |
mkdir -p node_modules
npm install --prefer-offline --no-audit --legacy-peer-deps

- name: Lint
run: npm run lint:sarif

- name: Upload lint results
if: always()
uses: github/codeql-action/upload-sarif@21830ef0c1f0f06f2d82ba3f1f07cb3ffe543ed7 # pin@codeql-bundle-20210517
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
sarif_file: lint-results.sarif
continue-on-error: true
node-version: "18"
cache: "yarn"
- run: yarn install --immutable --immutable-cache --check-cache
- run: yarn lint

foundry-tests:
runs-on: ubuntu-latest
Expand All @@ -80,10 +39,10 @@ jobs:
with:
submodules: recursive

- uses: actions/setup-node@v2
- uses: actions/setup-node@v3

- name: Install dependecies
run: npm install
- name: Install dependencies
run: yarn install --immutable --immutable-cache --check-cache

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
Expand All @@ -94,126 +53,7 @@ jobs:
run: forge install

- name: Run Tests without fork
run: forge test --no-match-contract NftCheck --no-match-test testPunksPurchasePool
run: forge test --no-match-contract NftCheck

- name: Run NftCheck tests with fork
run: forge test --match-contract NftCheck --fork-url ${ALCHEMY_URL}

- name: Run Punks tests with fork
run: forge test --match-contract AelinPoolPurchase --match-test testPunksPurchasePool --fork-url ${ALCHEMY_URL}

test:
needs: lint
if: always()
runs-on: ubuntu-latest
env:
KOVAN_PRIVATE_KEY: ${{ secrets.KOVAN_PRIVATE_KEY }}
ALCHEMY_URL: ${{ secrets.ALCHEMY_URL }}
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
OP_API_KEY: ${{ secrets.OP_API_KEY }}
OP_PRIVATE_KEY: ${{ secrets.OP_PRIVATE_KEY }}

container:
image: synthetixio/docker-sec-tools:16.17-alpine

steps:
- name: Checkout
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # pin@v2

- name: Set npm cache directory
run: npm config set cache .npm-cache --global
continue-on-error: true

- uses: actions/cache@c64c572235d810460d0d6876e9c705ad5002b353 # pin@v2
with:
path: |
.npm-cache
node_modules
key: ${{ runner.os }}-alpine-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-alpine-node-
continue-on-error: true

# fixes permission issues on gh actions + docker + npm@8
- name: Chown workspace
run: chown -R $(whoami) .

# mkdir -p node_modules fixes https://github.com/npm/cli/issues/3208 starting from npm@7
- name: Install dependencies
run: |
mkdir -p node_modules
npm install --prefer-offline --no-audit --legacy-peer-deps

- name: Compile
run: npm run compile

- name: Test
run: npm run test

- name: Generate coverage
run: npm run coverage -- --testfiles "test/unit/*.ts"

- name: Upload coverage
run: codecov -t ${CODECOV_TOKEN} -f coverage.json

build:
needs: test
if: always()
runs-on: ubuntu-latest

container:
image: synthetixio/docker-node:16.17-alpine

steps:
- name: Checkout
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # pin@v2

- name: Set npm cache directory
run: npm config set cache .npm-cache --global
continue-on-error: true

- uses: actions/cache@c64c572235d810460d0d6876e9c705ad5002b353 # pin@v2
with:
path: |
.npm-cache
node_modules
key: ${{ runner.os }}-alpine-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-alpine-node-
continue-on-error: true

# fixes permission issues on gh actions + docker + npm@8
- name: Chown workspace
run: chown -R $(whoami) .

# mkdir -p node_modules fixes https://github.com/npm/cli/issues/3208 starting from npm@7
- name: Install dependencies
run: |
mkdir -p node_modules
npm install --prefer-offline --no-audit --legacy-peer-deps

- name: Cache build cache
uses: actions/cache@c64c572235d810460d0d6876e9c705ad5002b353 # pin@v2
with:
path: cache
key: ${{ runner.os }}-alpine-cache-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-alpine-cache-
continue-on-error: true

- name: Build
run: npm run build

- name: Compress build
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || github.event_name == 'pull_request'
run: tar -zcvf build.tar.gz build
continue-on-error: true

- name: Archive build
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || github.event_name == 'pull_request'
uses: actions/upload-artifact@27121b0bdffd731efa15d66772be8dc71245d074 # pin@v2
with:
name: build
path: build.tar.gz
continue-on-error: true
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ coverage.json
.idea
lint-results.sarif
.env
.vscode/
.vscode/
.yarn/

1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
build/
typechain
contracts/deprecated
3 changes: 1 addition & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false,
"explicitTypes": "preserve"
"bracketSpacing": false
}
},
{
Expand Down
27 changes: 27 additions & 0 deletions .solhint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"extends": ["solhint:recommended"],
"plugins": ["numcast"],
"rules": {
"not-rely-on-time": "off",
"avoid-low-level-calls": "off",
"compiler-version": ["error", "^0.8.0"],
"contract-name-camelcase": "off",
"func-visibility": [
"error",
{
"ignoreConstructors": true
}
],
"no-complex-fallback": "off",
"no-inline-assembly": "off",
"private-vars-leading-underscore": "off",
"reason-string": [
"error",
{
"maxLength": 32
}
],
"numcast/safe-cast": "error",
"no-global-import": "off"
}
}
6 changes: 6 additions & 0 deletions .solhintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
artifacts/
node_modules/
**/contracts/generated
**/contracts/routers
**/typechain-types
contracts/deprecated
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
6 changes: 3 additions & 3 deletions cannonfile.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name = "aelincannon"
description = "Deploy Aelin factory contracts using Cannon"
name = "aelin-contracts"
description = "Deploy Aelin contracts using Cannon"
version = "0.0.1"
keywords = ["aelin", "cannon"]

Expand Down Expand Up @@ -43,4 +43,4 @@ depends = ["contract.poolLogic", "contract.dealLogic", "contract.aelinEscrowLogi
[contract.upFrontDealFactory]
artifact = "AelinUpFrontDealFactory" # Specifies the name of the contract to be deployed
args = ["<%= contracts.upFrontDealLogic.address %>", "<%= contracts.aelinEscrowLogic.address %>", "<%= settings.aelinTreasuryAddress %>"]
depends = ["contract.upFrontDealLogic", "contract.aelinEscrowLogic"]
depends = ["contract.upFrontDealLogic", "contract.aelinEscrowLogic"]
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.6;

import "./interfaces/IMerkleDistributor.sol";
import "./IMerkleDistributor.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./Owned.sol";
import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
Expand All @@ -15,11 +15,7 @@ contract MerkleDistributor is Owned, Pausable, IMerkleDistributor {
// This is a packed array of booleans.
mapping(uint256 => uint256) private claimedBitMap;

constructor(
address owner_,
address token_,
bytes32 merkleRoot_
) Owned(owner_) Pausable() {
constructor(address owner_, address token_, bytes32 merkleRoot_) Owned(owner_) Pausable() {
token = token_;
merkleRoot = merkleRoot_;
startTime = block.timestamp;
Expand All @@ -39,16 +35,12 @@ contract MerkleDistributor is Owned, Pausable, IMerkleDistributor {
claimedBitMap[claimedWordIndex] = claimedBitMap[claimedWordIndex] | (1 << claimedBitIndex);
}

function claim(
uint256 index,
address account,
uint256 amount,
bytes32[] calldata merkleProof
) external override {
function claim(uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external override {
require(!isClaimed(index), "MerkleDistributor: Drop already claimed.");

// Verify the merkle proof.
bytes32 node = keccak256(abi.encodePacked(index, account, amount));
bytes32 node = keccak256(bytes.concat(keccak256(abi.encode(index, account, amount))));

require(MerkleProof.verify(merkleProof, merkleRoot, node), "MerkleDistributor: Invalid proof.");

// Mark it claimed and send the token.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@ contract OptimismTreasury is Owned {

constructor(address _owner) Owned(_owner) {}

function transferToken(
address token,
address to,
uint256 amount
) external onlyOwner {
function transferToken(address token, address to, uint256 amount) external onlyOwner {
IERC20(token).transfer(to, amount);
}
}
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@ contract VAelinConverter is Owned {
address public immutable AELIN;
uint256 public startTime;

constructor(
address _owner,
address _vAelin,
address _aelin
) Owned(_owner) {
constructor(address _owner, address _vAelin, address _aelin) Owned(_owner) {
vAELIN = _vAelin;
AELIN = _aelin;
startTime = block.timestamp;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract VirtualAelinToken is ERC20 {
constructor(address preDistributionAddress) ERC20("Virtual Aelin Token", "vAELIN") {
_mint(preDistributionAddress, (((750 * 10**decimals()) * 100) / 98)); //
_mint(preDistributionAddress, (((750 * 10 ** decimals()) * 100) / 98)); //
}
}
Loading