diff --git a/address.ts b/address.ts new file mode 100644 index 00000000..c7d6293d --- /dev/null +++ b/address.ts @@ -0,0 +1,17 @@ +// APIIdeaNFT deployed to: 0x139f634Ff6F87154B7cF70fcb57425E99DAb920c +// apitoken deployed to: 0xE94CD8bB4c0B68d3dB9EDbC3d1b8a9fc3f66eDc9 +// GovernerCore deployed to: 0x8B7e789Dd527A231a36C7f49c2306B2FB2EC1899 +// PanacloudController deployed to: 0xcbAE0c9E3F966e254F8b63CE8EA305B7C0f5AAd5 +// PanaCoin deployed to: 0x3C3bbA8667cc45906925D58e9630F4a52945de2e +// PanaFactory deployed to: 0xD3726E2C9dB1216597d79D4c868c6a4C5389c7E8 +// PlatformGoverner deployed to: 0x2F951B7aC39c504882966e5B28657f1c20F278E4 +// Timelock deployed to: 0xcFcbCfD30316BB3Ef224158e10593d9C0DB94E7f + +export const APIIdeaNFT = "0x139f634Ff6F87154B7cF70fcb57425E99DAb920c" +export const Apitoken = "0xE94CD8bB4c0B68d3dB9EDbC3d1b8a9fc3f66eDc9" +export const GovernerCore = "0x8B7e789Dd527A231a36C7f49c2306B2FB2EC1899" +export const PanacloudController = "0xcbAE0c9E3F966e254F8b63CE8EA305B7C0f5AAd5" +export const PanaCoin = "0x3C3bbA8667cc45906925D58e9630F4a52945de2e" +export const PanaFactory = "0xD3726E2C9dB1216597d79D4c868c6a4C5389c7E8" +export const PlatformGoverner = "0x2F951B7aC39c504882966e5B28657f1c20F278E4" +export const Timelock = "0xcFcbCfD30316BB3Ef224158e10593d9C0DB94E7f" \ No newline at end of file diff --git a/contracts/Apitoken.sol b/contracts/Apitoken.sol index 033ab93f..02380a1c 100644 --- a/contracts/Apitoken.sol +++ b/contracts/Apitoken.sol @@ -4,6 +4,8 @@ pragma solidity >=0.4.22 <0.9.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/utils/Context.sol"; +import "./DAIcoin.sol"; + contract ApiToken is ERC20{ @@ -46,8 +48,8 @@ contract ApiToken is ERC20{ require(payees.length > 0, " no payees"); owner_ = msg.sender; for (uint256 i = 0; i < payees.length; i++) { - _addPayee(payees[i], shares_[i]*10**decimals()); - _mint(payees[i], shares_[i]*10**decimals()); + _addPayee(payees[i], shares_[i]); + _mint(payees[i], shares_[i]); } } @@ -201,14 +203,14 @@ contract ApiToken is ERC20{ function transfer(address recipient, uint256 amount) public override returns (bool) { - if(isContract(recipient) && !isContract(_msgSender())) + if(isContract(recipient) && !isContract(_msgSender())) { _unclaimedPayment[_msgSender()]=unclaimedPayment(_msgSender()); _pointOne[_msgSender()]=_totalRevenue; _shares[_msgSender()]=_shares[_msgSender()]-amount; - + _totalShares = _totalShares - amount; - + _transfer(_msgSender(), recipient, amount); return true; } @@ -228,17 +230,16 @@ contract ApiToken is ERC20{ _unclaimedPayment[_msgSender()]=unclaimedPayment(_msgSender()); _pointOne[_msgSender()]=_totalRevenue; _shares[_msgSender()]=_shares[_msgSender()]-amount; - + _unclaimedPayment[recipient]=unclaimedPayment(recipient); _pointOne[recipient]=_totalRevenue; _shares[recipient]=_shares[recipient]+amount; - + _transfer(_msgSender(), recipient, amount); - - + + return true; } - } function transferFrom( diff --git a/contracts/Timelock.sol b/contracts/Timelock.sol index 546154f5..a901f9b1 100644 --- a/contracts/Timelock.sol +++ b/contracts/Timelock.sol @@ -24,6 +24,7 @@ contract Timelock is Ownable { constructor(address admin_, uint delay_) { + delay_ = delay_ * 1 days; require(delay_ >= MINIMUM_DELAY, "Timelock::constructor: Delay must exceed minimum delay."); require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay."); diff --git a/hardhat.config.ts b/hardhat.config.ts index 5d4d5172..4fc30579 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -15,10 +15,22 @@ task("accounts", "Prints the list of accounts", async (taskArgs, hre) => { // You need to export an object to set up your config // Go to https://hardhat.org/config/ to learn more - +const ALCHEMY_API_KEY = `f9Ve8ws0_LMHLdew7lncSD1f0DreXFA3` +const privateKey = `73b69d165f4513a5fde731e50e8e9c299f2f4df86f0bcab4bd4a955b151faa76` /** * @type import('hardhat/config').HardhatUserConfig */ export default { solidity: "0.8.4", + networks: { + ropsten: { + url: `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_API_KEY}`, + accounts: [`0x${privateKey}`], + }, + hardhat: { + forking: { + url: "https://eth-ropsten.alchemyapi.io/v2/f9Ve8ws0_LMHLdew7lncSD1f0DreXFA3", + } + } + } }; diff --git a/scripts/deploy.ts b/scripts/deploy.ts new file mode 100644 index 00000000..2a6b19f0 --- /dev/null +++ b/scripts/deploy.ts @@ -0,0 +1,91 @@ +// We require the Hardhat Runtime Environment explicitly here. This is optional +// but useful for running the script in a standalone fashion through `node