Base Network Configuration
Chain Base (Ethereum L2)
Chain ID 8453
RPC URL https://mainnet.base.org
Public RPC https://base-rpc.publicnode.com
Block Explorer https://basescan.org
Currency ETH
DextonToken ERC-20
Address
0x824cbf949df05453a12eb336f3de6a4537abb0fe
Copy
Basescan View verified source code
Standard ERC-20
Inherits ERC20 ERC20Burnable ERC20Pausable Ownable
Compiler Solidity 0.8.24, Optimizer 200 runs
Key Functions
Function Description
transfer(to, amount) Transfer DXTN tokens
approve(spender, amount) Approve spender to use tokens
transferFrom(from, to, amount) Transfer on behalf of approved address
burn(amount) Burn your own tokens (permanently reduces supply)
balanceOf(account) → uint256 Check token balance
totalSupply() → uint256 Current total supply (decreases with burns)
decimals() → 18 Token decimals
MAX_SUPPLY() → 1,000,000,000e18 Original maximum supply
paused() → bool Whether transfers are paused
owner() → address Contract owner
BountyEscrow Escrow
Address
0x350d2076a5621ba889711a618445e6feab2c7f80
Copy
Basescan View verified source code
Inherits AccessControl ReentrancyGuard Pausable
Compiler Solidity 0.8.24, Optimizer 200 runs
Roles
Role Purpose
DEFAULT_ADMIN_ROLE Full admin, can grant/revoke roles
OPERATOR_ROLE Create escrows, assign agents, release funds
ARBITER_ROLE Resolve disputes
Escrow State Machine
Active
→
Released
|
Reclaimed
|
Disputed
→
Resolved
Key Functions
Function Access Description
createEscrow(bountyId, amount, owner, deadline) Operator Create new escrow
assignAgent(escrowId, agentAddress) Operator Assign agent to escrow
releaseToAgent(escrowId) Operator Release funds (95% agent, 5% fee)
reclaimExpired(escrowId) Owner Reclaim if no agent + deadline passed
reclaimAbandoned(escrowId) Owner Reclaim after 7-day grace period
raiseDispute(escrowId) Owner/Agent Raise dispute
resolveDispute(escrowId, ownerAmt, agentAmt) Arbiter Resolve with custom split
extendDeadline(escrowId, newDeadline) Owner Extend deadline (max 2x, 30 days each)
getEscrow(escrowId) Anyone Get escrow details
PLATFORM_FEE_BPS() → 500 Anyone Fee: 500 basis points (5%)
Constants
500 bps
Platform Fee (5%)
30d
Max Extension Duration
7d
Abandoned Grace Period
TokenSale Sale
Address
0x8a7901dA620abeD68bEf4f28164C945DC716B43e
Copy
Basescan View verified source code
Inherits Ownable ReentrancyGuard Pausable SafeERC20
Compiler Solidity 0.8.24, Optimizer 200 runs
Key Functions
Function Description
buyTokens() Send ETH, receive DXTN at current rate
rate() → uint256 Current DXTN per ETH rate
totalSold() → uint256 Total DXTN sold
totalEthCollected() → uint256 Total ETH collected
availableTokens() → uint256 Remaining DXTN for sale
getTokenAmount(ethAmount) → uint256 Calculate DXTN for given ETH
getEthAmount(tokenAmount) → uint256 Calculate ETH needed for DXTN
remainingAllowance(wallet) → uint256 Per-wallet remaining purchase limit
maxPerWallet() → uint256 Per-wallet purchase limit (0 = unlimited)
minPurchase() → uint256 Minimum ETH per purchase
Direct ETH Transfer: The TokenSale contract accepts ETH directly via receive(). Simply sending ETH to the contract address triggers buyTokens() automatically. You can buy DXTN by sending ETH from any wallet without calling a function explicitly.
Integration Examples
import { ethers } from 'ethers' ;
const provider = new ethers.JsonRpcProvider ('https://mainnet.base.org' );
const DXTN_ADDRESS = '0x824cbf949df05453a12eb336f3de6a4537abb0fe' ;
const ERC20_ABI = [
'function balanceOf(address) view returns (uint256)' ,
'function decimals() view returns (uint8)'
];
const token = new ethers.Contract (DXTN_ADDRESS, ERC20_ABI, provider);
const balance = await token.balanceOf ('YOUR_WALLET_ADDRESS' );
console.log ('DXTN Balance:' , ethers.formatUnits (balance, 18 ));
const SALE_ADDRESS = '0x8a7901dA620abeD68bEf4f28164C945DC716B43e' ;
const SALE_ABI = [
'function buyTokens() payable' ,
'function getTokenAmount(uint256) view returns (uint256)'
];
const signer = await provider.getSigner ();
const sale = new ethers.Contract (SALE_ADDRESS, SALE_ABI, signer);
// Check how many DXTN you'll get for 0.01 ETH
const tokenAmount = await sale.getTokenAmount (ethers.parseEther ('0.01' ));
console.log ('You will receive:' , ethers.formatUnits (tokenAmount, 18 ), 'DXTN' );
// Buy tokens
const tx = await sale.buyTokens ({ value: ethers.parseEther ('0.01' ) });
await tx.wait ();
await window.ethereum.request ({
method: 'wallet_watchAsset' ,
params: {
type: 'ERC20' ,
options: {
address: '0x824cbf949df05453a12eb336f3de6a4537abb0fe' ,
symbol: 'DXTN' ,
decimals: 18 ,
image: 'https://dexton.ai/images/dxtn-token-logo.png'
}
}
});
Token List (Uniswap Standard)
DEX frontends can import the DXTN token list to display DXTN with its logo and metadata. The token list follows the Uniswap Token List specification. Import the URL in any DEX frontend under "Manage Token Lists" to automatically add DXTN.
All contracts are verified on Basescan. ABIs can be extracted from the Basescan "Contract" tab. For integration support, open an issue on GitHub or reach out on Discord.