nft test ing
This commit is contained in:
@@ -24,7 +24,7 @@ export class NFTContext {
|
||||
EVM: EVM;
|
||||
Web3: Web3;
|
||||
NFTTokenFacotry: Contract;
|
||||
|
||||
|
||||
NFTRegister: Contract;
|
||||
CollatteralVault: Contract;
|
||||
Fragment: Contract;
|
||||
@@ -33,10 +33,11 @@ export class NFTContext {
|
||||
NFTProxy: Contract;
|
||||
DODOApprove: Contract;
|
||||
DODOApproveProxy: Contract;
|
||||
|
||||
|
||||
//token
|
||||
USDT: Contract;
|
||||
WETH: Contract;
|
||||
DODO: Contract;
|
||||
|
||||
Deployer: string;
|
||||
Maintainer: string;
|
||||
@@ -59,6 +60,11 @@ export class NFTContext {
|
||||
["USDT Token", "USDT", 6]
|
||||
);
|
||||
|
||||
this.DODO = await contracts.newContract(
|
||||
contracts.MINTABLE_ERC20_CONTRACT_NAME,
|
||||
["DODO Token", "DODO", 6]
|
||||
);
|
||||
|
||||
var cloneFactory = await contracts.newContract(
|
||||
contracts.CLONE_FACTORY_CONTRACT_NAME
|
||||
);
|
||||
@@ -116,6 +122,8 @@ export class NFTContext {
|
||||
|
||||
await this.NFTProxy.methods.initOwner(this.Deployer).send(this.sendParam(this.Deployer));
|
||||
|
||||
await this.NFTRegister.methods.addAmindList(this.NFTProxy.options.address).send(this.sendParam(this.Deployer));
|
||||
|
||||
|
||||
await this.DODOApprove.methods.init(this.Deployer, this.DODOApproveProxy.options.address).send(this.sendParam(this.Deployer));
|
||||
await this.DODOApproveProxy.methods.init(this.Deployer, [this.NFTProxy.options.address]).send(this.sendParam(this.Deployer));
|
||||
@@ -136,14 +144,91 @@ export class NFTContext {
|
||||
await token.methods.mint(to, amount).send(this.sendParam(this.Deployer));
|
||||
}
|
||||
|
||||
async approveProxy(account: string) {
|
||||
await this.USDT.methods
|
||||
.approve(this.DODOApprove.options.address, MAX_UINT256)
|
||||
.send(this.sendParam(account));
|
||||
await this.WETH.methods
|
||||
async approveProxy(token, account: string) {
|
||||
await token.methods
|
||||
.approve(this.DODOApprove.options.address, MAX_UINT256)
|
||||
.send(this.sendParam(account));
|
||||
}
|
||||
|
||||
async getRegistry(ctx: NFTContext, vaultAddress: string) {
|
||||
let fragAddress = await ctx.NFTRegister.methods._VAULT_FRAG_REGISTRY_(vaultAddress).call();
|
||||
let feeDistrubitor = await ctx.NFTRegister.methods._FRAG_FEE_REGISTRY_(fragAddress).call();
|
||||
let fragInstance = contracts.getContractWithAddress(contracts.NFT_FRAG, fragAddress);
|
||||
let dvmAddress = await fragInstance.methods._DVM_().call();
|
||||
return [fragAddress, feeDistrubitor, dvmAddress];
|
||||
}
|
||||
|
||||
async createNFTVault(ctx: NFTContext, author: string) {
|
||||
var tx = await ctx.NFTProxy.methods.createNFTCollateralVault(
|
||||
"DODONFT",
|
||||
"https://app.dodoex.io"
|
||||
).send(ctx.sendParam(author));
|
||||
|
||||
return tx.events['CreateNFTCollateralVault']['returnValues']['vault'];
|
||||
}
|
||||
|
||||
async createERC721(ctx: NFTContext, author: string) {
|
||||
var tx = await ctx.NFTTokenFacotry.methods.createERC721(
|
||||
"https://app.dodoex.io"
|
||||
).send(ctx.sendParam(author));
|
||||
return tx.events['NewERC721']['returnValues']['erc721'];
|
||||
}
|
||||
|
||||
async createFragment(ctx: NFTContext, author: string, dvmParams, fragParams, addrs) {
|
||||
var erc721Address = await this.createERC721(ctx, author);
|
||||
var vaultAddress = await this.createNFTVault(ctx, author);
|
||||
var nftVaultInstance = contracts.getContractWithAddress(contracts.NFT_VAULT, vaultAddress);
|
||||
var erc721Instance = contracts.getContractWithAddress(contracts.ERC721, erc721Address);
|
||||
await erc721Instance.methods.safeTransferFrom(author, vaultAddress,0).send(ctx.sendParam(author));
|
||||
if (dvmParams == null) {
|
||||
dvmParams = [
|
||||
"0", //lpFeeRate
|
||||
decimalStr("0.01"), //mtFeeRate
|
||||
mweiStr("1"), // I
|
||||
decimalStr("1") // K
|
||||
];
|
||||
}
|
||||
if (fragParams == null) {
|
||||
fragParams = [
|
||||
decimalStr("100000000"), //totalSupply
|
||||
decimalStr("0.2"), //ownerRatio
|
||||
Math.floor(new Date().getTime() / 1000 + 60 * 60) //buyoutTimeStamp 1h later
|
||||
]
|
||||
}
|
||||
if (addrs == null) {
|
||||
addrs = []
|
||||
addrs.push(ctx.USDT.options.address);//quoteToken
|
||||
addrs.push(author);//vaultPreOwner
|
||||
addrs.push("0x0000000000000000000000000000000000000000");//stakeToken
|
||||
}
|
||||
|
||||
var callData = ctx.NFTProxy.methods.createFragment(
|
||||
addrs[0],
|
||||
addrs[1],
|
||||
addrs[2],
|
||||
dvmParams,
|
||||
fragParams,
|
||||
false
|
||||
).encodeABI();
|
||||
|
||||
await nftVaultInstance.methods.createFragment(
|
||||
ctx.NFTProxy.options.address,
|
||||
callData
|
||||
).send(ctx.sendParam(author));
|
||||
|
||||
let [fragAddress, feeAddress, dvmAddress] = await this.getRegistry(ctx, vaultAddress);
|
||||
return [vaultAddress, fragAddress, feeAddress, dvmAddress, callData]
|
||||
}
|
||||
|
||||
|
||||
async transferBaseToDVM(baseToken, dvm: string, account: string, amount: string) {
|
||||
await baseToken.methods.transfer(dvm, amount).send(this.sendParam(account))
|
||||
}
|
||||
|
||||
async transferQuoteToDVM(quoteToken, dvm: string, account: string, amount: string) {
|
||||
await quoteToken.methods.transfer(dvm, amount).send(this.sendParam(account))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export async function getDODONftContext(weth: string): Promise<NFTContext> {
|
||||
|
||||
Reference in New Issue
Block a user