From de5eb4bca871c59ee02fbef4c61c477aaad5546f Mon Sep 17 00:00:00 2001 From: cebgcontract <99630598+cebgcontract@users.noreply.github.com> Date: Mon, 21 Feb 2022 16:00:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96deploy=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/contracts/BEBoxMall.json | 6 +-- build/contracts/BEChip.json | 6 +-- build/contracts/BECoin.json | 6 +-- build/contracts/BEEquipment.json | 6 +-- build/contracts/BEHero.json | 6 +-- build/contracts/BETimelockController.json | 8 +++- build/contracts/EvolveProxy.json | 6 +-- build/contracts/MarketPlace.json | 6 +-- build/contracts/Migrations.json | 6 +-- build/contracts/MinterFactory.json | 6 +-- contracts/BECoin.sol | 2 +- contracts/EvolveProxy.sol | 14 +++++- contracts/HasSignature.sol | 4 +- migrations/8_deploy_timelock.js | 43 ------------------ migrations/9_update_timelock.js | 53 +++++++++++++++++++++++ package.json | 7 +-- 16 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 migrations/9_update_timelock.js diff --git a/build/contracts/BEBoxMall.json b/build/contracts/BEBoxMall.json index 46b723c..dd515fa 100644 --- a/build/contracts/BEBoxMall.json +++ b/build/contracts/BEBoxMall.json @@ -44538,8 +44538,8 @@ } }, "links": {}, - "address": "0x40ffB0642e0B4494c47b6ad781862C0BDB3256A8", - "transactionHash": "0x3343d55bd3d060fefb90703bc4b6330e23f30ff4fe11e7f6cd9062e2461396a7" + "address": "0xF278ff771F9E24968083B0bA54Cb42eb4B23C2d7", + "transactionHash": "0xee0f42f0e5420e8cfb454e8458f8ac0e67f34515ab1cce5041ae277a4f5684b6" }, "1337": { "events": { @@ -45142,7 +45142,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.159Z", + "updatedAt": "2022-02-18T08:03:21.417Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BEChip.json b/build/contracts/BEChip.json index 00c4f8f..f422948 100644 --- a/build/contracts/BEChip.json +++ b/build/contracts/BEChip.json @@ -24047,8 +24047,8 @@ } }, "links": {}, - "address": "0x3E5296621FAE29E44144Ba632C25148e7cb3dAD9", - "transactionHash": "0x72803d22210c4796148a83a96de61585b6d362dcc8f02d29bb77336130141637" + "address": "0xca191D827f1d042e27AeD858534830758E39C89E", + "transactionHash": "0xbddd6429b743d71aadcf908e683b7070a218ead7fa427b54c5eb7d4c2ce2fd1f" }, "1337": { "events": { @@ -24580,7 +24580,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.223Z", + "updatedAt": "2022-02-18T08:03:21.485Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BECoin.json b/build/contracts/BECoin.json index ac88153..950d207 100644 --- a/build/contracts/BECoin.json +++ b/build/contracts/BECoin.json @@ -10114,8 +10114,8 @@ } }, "links": {}, - "address": "0x342927700cd93ED7a08F7f5A75844171276AADc4", - "transactionHash": "0x679ae298e758c17705d1f3dc06be3031b0533ce67d6dd3dc361ff2ab0f933b80" + "address": "0xfeFc3aab779863c1624eE008aba485c53805dCeb", + "transactionHash": "0xbedae77445aee6f04dd8e9d51a12d9917df1e7bc16799603faf9f2918621547f" }, "1337": { "events": { @@ -10359,7 +10359,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.179Z", + "updatedAt": "2022-02-18T08:03:21.433Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BEEquipment.json b/build/contracts/BEEquipment.json index 76a1045..8134ebc 100644 --- a/build/contracts/BEEquipment.json +++ b/build/contracts/BEEquipment.json @@ -24047,8 +24047,8 @@ } }, "links": {}, - "address": "0x500a39FF77A2F6A2d9FF90A145950E1e2B28bADa", - "transactionHash": "0x1d0510f1dc539054b4648139a520e1540c5850f7c204fec0e6ed9d619b02687a" + "address": "0x7E4cdCDFBC43e40d718B7FCb18cE59d114152094", + "transactionHash": "0xb0b2eb5726c104f40ed8228726132a31b2f44aa863cae335fd1ff0bc25babf37" }, "1337": { "events": { @@ -24580,7 +24580,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.206Z", + "updatedAt": "2022-02-18T08:03:21.465Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BEHero.json b/build/contracts/BEHero.json index 8f8ad4d..f6baf03 100644 --- a/build/contracts/BEHero.json +++ b/build/contracts/BEHero.json @@ -24053,8 +24053,8 @@ } }, "links": {}, - "address": "0x7ddbE0A6069d6a807bd7fDB8D722875120e8966A", - "transactionHash": "0x4fb3327afaff1d083ef86c1befd6e5b297b417ad77bc50b0a07fcf1c2d0c6002" + "address": "0xb783184dc14fA90c33766c7e8992ded045FA4058", + "transactionHash": "0x434f9c2104edb85e179fdb561f5d74c0dfca9b4d98f993f32ca24b8f5a164f59" }, "1337": { "events": { @@ -24586,7 +24586,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.190Z", + "updatedAt": "2022-02-18T08:03:21.447Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BETimelockController.json b/build/contracts/BETimelockController.json index 841d0ad..33cb7d4 100644 --- a/build/contracts/BETimelockController.json +++ b/build/contracts/BETimelockController.json @@ -24239,6 +24239,12 @@ "version": "0.8.10+commit.fc410830.Emscripten.clang" }, "networks": { + "322": { + "events": {}, + "links": {}, + "address": "0x4613089287F604Eff94c1ab34B31424Fc4BD5312", + "transactionHash": "0xa881622258e0ee6005ebdf0932028565ceaa9fdd5f49265f5720008606a6dbd8" + }, "1337": { "events": { "0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58": { @@ -24647,7 +24653,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.138Z", + "updatedAt": "2022-02-18T08:03:21.389Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/EvolveProxy.json b/build/contracts/EvolveProxy.json index 2285fcc..05484c2 100644 --- a/build/contracts/EvolveProxy.json +++ b/build/contracts/EvolveProxy.json @@ -24867,8 +24867,8 @@ } }, "links": {}, - "address": "0x8893624C7CbB824FF6b62A8d4F740F3151192D85", - "transactionHash": "0x84b3fa557e717eb583919aee8b8cae7321e648eed58e0c98e97d50137a0543f3" + "address": "0x00ad7758953f899aF5B2C8E960239f606BF29A3f", + "transactionHash": "0x2124f43f3bfd996cfc71ab6e1d5a88ab2e3d9fed4f84ac48378771b20a3bef6b" }, "1337": { "events": { @@ -25066,7 +25066,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.265Z", + "updatedAt": "2022-02-18T08:03:21.538Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/MarketPlace.json b/build/contracts/MarketPlace.json index 17a1c14..5182e3f 100644 --- a/build/contracts/MarketPlace.json +++ b/build/contracts/MarketPlace.json @@ -33586,8 +33586,8 @@ } }, "links": {}, - "address": "0xF23B5A4D36ae21E035A12c7Bfac6c4bfc65Db088", - "transactionHash": "0x8765c301e2432f0e21ebffef945f9b84f579eef59c09c34d2311a2741d88b1db" + "address": "0x807A43Ca45811A7077136814Da7D2451c0d2F51f", + "transactionHash": "0x77e5c21122e2550879a86d8502a64b0c2f1bfca2ddb7a8a4a70023a91113aa64" }, "1337": { "events": { @@ -33866,7 +33866,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.240Z", + "updatedAt": "2022-02-18T08:03:21.506Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index bb8801f..a4088f6 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -3146,8 +3146,8 @@ "322": { "events": {}, "links": {}, - "address": "0xC4f48dcb760E431E2D29752c5cA81180Cb31FA45", - "transactionHash": "0xb196323e6b2ffddb1a6df94615f18d4f423054477b201a44a77a66c6221e70f0" + "address": "0x5b36329D0DA1F56eD60F3C5DE1855c8dE0440140", + "transactionHash": "0xa21ab0e0b5eb5c5d1213e92deb7d3665e11b0552836b862d3a248acd3efd9d75" }, "1337": { "events": {}, @@ -3169,7 +3169,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.275Z", + "updatedAt": "2022-02-18T08:03:21.545Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/MinterFactory.json b/build/contracts/MinterFactory.json index 735cde4..2899285 100644 --- a/build/contracts/MinterFactory.json +++ b/build/contracts/MinterFactory.json @@ -8853,8 +8853,8 @@ } }, "links": {}, - "address": "0x10F883D6e26fBb56Ab20466502BFD9017a1ea144", - "transactionHash": "0x55be186130f938b282f7e56d9f176919a1a55ffd71a05304558cb691d04e7f58" + "address": "0x91155Fda04fA11b3ffd6213b33179DD67fE6B844", + "transactionHash": "0x06f167fb679dc1b6fef94687aa9351303be9b4b5628d431b423ba62349c0414a" }, "1337": { "events": { @@ -8966,7 +8966,7 @@ } }, "schemaVersion": "3.4.3", - "updatedAt": "2022-02-18T06:20:26.255Z", + "updatedAt": "2022-02-18T08:03:21.522Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/contracts/BECoin.sol b/contracts/BECoin.sol index 36ad1e7..3fd03c2 100644 --- a/contracts/BECoin.sol +++ b/contracts/BECoin.sol @@ -4,7 +4,7 @@ import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract BECoin is ERC20Burnable { - uint256 public constant INITIALIZED_CAP = 20000000 * 1e18; + uint256 public constant INITIALIZED_CAP = 100000000 * 1e18; constructor() ERC20("Crypto Elite's Coin", "CEC") { _mint(_msgSender(), INITIALIZED_CAP); diff --git a/contracts/EvolveProxy.sol b/contracts/EvolveProxy.sol index 3348594..19e469f 100644 --- a/contracts/EvolveProxy.sol +++ b/contracts/EvolveProxy.sol @@ -16,6 +16,8 @@ contract EvolveProxy is Ownable, Initializable, HasSignature { mapping(bytes => bool) public usedSignatures; + address public executor; + event TokenEvolved( uint256 indexed evolveEventId, address indexed owner, @@ -34,6 +36,14 @@ contract EvolveProxy is Ownable, Initializable, HasSignature { chip = IBurnableERC721(_erc721s[2]); } + /** + * @dev update executor + */ + function updateExecutor(address account) external onlyOwner { + require(account != address(0), 'address can not be zero'); + executor = account; + } + /** * @dev evolve function to Blissful Elites Hero NFT * tokenIds: [hero_to_evolve, hero_for_burn, chip] @@ -64,7 +74,7 @@ contract EvolveProxy is Ownable, Initializable, HasSignature { tokenIds[2], saltNonce ); - checkSigner(msg.sender, criteriaMessageHash, signature); + checkSigner(executor, criteriaMessageHash, signature); hero.burn(msg.sender, tokenIds[1]); if (tokenIds[2] > 0) { chip.burn(msg.sender, tokenIds[2]); @@ -103,7 +113,7 @@ contract EvolveProxy is Ownable, Initializable, HasSignature { tokenIds[2], saltNonce ); - checkSigner(msg.sender, criteriaMessageHash, signature); + checkSigner(executor, criteriaMessageHash, signature); equip.burn(msg.sender, tokenIds[1]); if (tokenIds[2] > 0) { chip.burn(msg.sender, tokenIds[2]); diff --git a/contracts/HasSignature.sol b/contracts/HasSignature.sol index fd49534..9bbd1cf 100644 --- a/contracts/HasSignature.sol +++ b/contracts/HasSignature.sol @@ -92,7 +92,7 @@ contract HasSignature { address signer, bytes32 structHash, bytes memory signature - ) public view{ + ) external view{ bytes32 digest = _hashTypedDataV4(structHash); address recovered = ECDSA.recover(digest, signature); require(recovered == signer, "[BE] invalid signature"); @@ -103,7 +103,7 @@ contract HasSignature { address signer, bytes32 hash, bytes memory signature - ) public pure { + ) external pure { require(signature.length == 65, "[BE] invalid signature length"); bytes32 ethSignedMessageHash = ECDSA.toEthSignedMessageHash( hash diff --git a/migrations/8_deploy_timelock.js b/migrations/8_deploy_timelock.js index 167d219..7ac9660 100644 --- a/migrations/8_deploy_timelock.js +++ b/migrations/8_deploy_timelock.js @@ -1,12 +1,4 @@ const TimelockController = artifacts.require('BETimelockController'); -const Box = artifacts.require('BEBoxMall'); -const Coin = artifacts.require('BECoin'); -const Hero = artifacts.require('BEHero'); -const Equip = artifacts.require('BEEquipment'); -const Chip = artifacts.require('BEChip'); -const MarketPlace = artifacts.require('MarketPlace'); -const Factory = artifacts.require('MinterFactory'); -const EvolveProxy = artifacts.require('EvolveProxy'); const config = require("../config/config"); @@ -20,39 +12,4 @@ module.exports = async function (deployer, network, accounts) { if(timelockInstance) { console.log("TimelockController successfully deployed.") } - try { - const marketInstance = await MarketPlace.deployed(); - await marketInstance.transferOwnership(timelockInstance.address); - console.log('MarketPlace onwer has change to: ', timelockInstance.address); - const heroInstance = await Hero.deployed(); - await heroInstance.transferOwnership(timelockInstance.address); - console.log('Hero onwer has change to: ', timelockInstance.address); - const equipInstance = await Equip.deployed(); - await equipInstance.transferOwnership(timelockInstance.address); - console.log('Equip onwer has change to: ', timelockInstance.address); - const chipInstance = await Chip.deployed(); - await chipInstance.transferOwnership(timelockInstance.address); - console.log('Chip onwer has change to: ', timelockInstance.address); - console.log('============= begin generate config ==============') - const coinInstance = await Coin.deployed(); - const factoryInstance = await Factory.deployed(); - const proxyInstance = await EvolveProxy.deployed(); - const boxInstance = await Box.deployed(); - let jsons = [] - jsons.push({name: 'coin', json: 'assets/contracts/BECoin.json', address: coinInstance.address}) - jsons.push({name: 'hero', json: 'assets/contracts/BEHero.json', address: heroInstance.address}) - jsons.push({name: 'equip', json: 'assets/contracts/BEEquipment.json', address: equipInstance.address}) - jsons.push({name: 'chip', json: 'assets/contracts/BEChip.json', address: chipInstance.address}) - jsons.push({name: 'factory', json: 'assets/contracts/MinterFactory.json', address: factoryInstance.address}) - jsons.push({name: 'market', json: 'assets/contracts/MarketPlace.json', address: marketInstance.address}) - jsons.push({name: 'mall', json: 'assets/contracts/BEBoxMall.json', address: boxInstance.address}) - jsons.push({name: 'proxy', json: 'assets/contracts/EvolveProxy.json', address: proxyInstance.address}) - jsons.push({name: 'timelock', json: 'assets/contracts/BETimelockController.json', address: timelockInstance.address}) - console.log(jsons); - console.log(`export const userAddress = '${accounts[0]}';`) - console.log(`export const privateKey = '';`) - console.log(`export const userBuyAddress = '${accounts[1]}';`) - } catch(err) { - console.log('generate config with error: ', err); - } } \ No newline at end of file diff --git a/migrations/9_update_timelock.js b/migrations/9_update_timelock.js new file mode 100644 index 0000000..331063b --- /dev/null +++ b/migrations/9_update_timelock.js @@ -0,0 +1,53 @@ +const TimelockController = artifacts.require('BETimelockController'); +const Box = artifacts.require('BEBoxMall'); +const Coin = artifacts.require('BECoin'); +const Hero = artifacts.require('BEHero'); +const Equip = artifacts.require('BEEquipment'); +const Chip = artifacts.require('BEChip'); +const MarketPlace = artifacts.require('MarketPlace'); +const Factory = artifacts.require('MinterFactory'); +const EvolveProxy = artifacts.require('EvolveProxy'); +const config = require("../config/config"); + + +module.exports = async function (deployer, network, accounts) { + + try { + const timelockInstance = await TimelockController.deployed(); + const marketInstance = await MarketPlace.deployed(); + await marketInstance.transferOwnership(timelockInstance.address); + console.log('MarketPlace onwer has change to: ', timelockInstance.address); + const heroInstance = await Hero.deployed(); + await heroInstance.transferOwnership(timelockInstance.address); + console.log('Hero onwer has change to: ', timelockInstance.address); + const equipInstance = await Equip.deployed(); + await equipInstance.transferOwnership(timelockInstance.address); + console.log('Equip onwer has change to: ', timelockInstance.address); + const chipInstance = await Chip.deployed(); + await chipInstance.transferOwnership(timelockInstance.address); + console.log('Chip onwer has change to: ', timelockInstance.address); + const proxyInstance = await EvolveProxy.deployed(); + await proxyInstance.transferOwnership(timelockInstance.address); + console.log('EvolveProxy onwer has change to: ', timelockInstance.address); + console.log('============= begin generate config ==============') + const coinInstance = await Coin.deployed(); + const factoryInstance = await Factory.deployed(); + const boxInstance = await Box.deployed(); + let jsons = [] + jsons.push({name: 'coin', json: 'assets/contracts/BECoin.json', address: coinInstance.address}) + jsons.push({name: 'hero', json: 'assets/contracts/BEHero.json', address: heroInstance.address}) + jsons.push({name: 'equip', json: 'assets/contracts/BEEquipment.json', address: equipInstance.address}) + jsons.push({name: 'chip', json: 'assets/contracts/BEChip.json', address: chipInstance.address}) + jsons.push({name: 'factory', json: 'assets/contracts/MinterFactory.json', address: factoryInstance.address}) + jsons.push({name: 'market', json: 'assets/contracts/MarketPlace.json', address: marketInstance.address}) + jsons.push({name: 'mall', json: 'assets/contracts/BEBoxMall.json', address: boxInstance.address}) + jsons.push({name: 'proxy', json: 'assets/contracts/EvolveProxy.json', address: proxyInstance.address}) + jsons.push({name: 'timelock', json: 'assets/contracts/BETimelockController.json', address: timelockInstance.address}) + console.log(jsons); + console.log(`export const userAddress = '${accounts[0]}';`) + console.log(`export const privateKey = '';`) + console.log(`export const userBuyAddress = '${accounts[1]}';`) + } catch(err) { + console.log('generate config with error: ', err); + } +} \ No newline at end of file diff --git a/package.json b/package.json index d8ec84d..d14615b 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,11 @@ "main": "index.js", "scripts": { "test": "npx truffle test", + "build": "truffle compile", "deploy:dev": "truffle migrate --network development", - "deploy:22": "truffle migrate --network lan22", - "deploy:bsctest": "truffle migrate --network bsc_testnet", - "deploy:kcctest": "truffle migrate --network kcc_testnet" + "deploy:22": "truffle migrate --network lan22 --compile-none", + "deploy:bsctest": "truffle migrate --network bsc_testnet --compile-none", + "deploy:kcctest": "truffle migrate --network kcc_testnet --compile-none" }, "author": "", "license": "ISC",