Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
openzeppelin-contracts-upgradeable
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
openzeppelin-contracts-upgradeable
Commits
143ccf7a
Commit
143ccf7a
authored
Oct 04, 2018
by
Nicolás Venturo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed Initializable from mocks, removed explicit inheritances in the crowdsale mocks.
parent
dd750bc0
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
44 additions
and
85 deletions
+44
-85
AllowanceCrowdsaleImpl.sol
contracts/mocks/AllowanceCrowdsaleImpl.sol
+1
-2
BreakInvariantBountyMock.sol
contracts/mocks/BreakInvariantBountyMock.sol
+2
-3
CappedCrowdsaleImpl.sol
contracts/mocks/CappedCrowdsaleImpl.sol
+1
-2
CapperRoleMock.sol
contracts/mocks/CapperRoleMock.sol
+1
-2
ConditionalEscrowMock.sol
contracts/mocks/ConditionalEscrowMock.sol
+1
-3
CrowdsaleMock.sol
contracts/mocks/CrowdsaleMock.sol
+1
-2
DetailedERC20Mock.sol
contracts/mocks/DetailedERC20Mock.sol
+1
-2
ECDSAMock.sol
contracts/mocks/ECDSAMock.sol
+0
-1
ERC20BurnableMock.sol
contracts/mocks/ERC20BurnableMock.sol
+1
-2
ERC20CappedMock.sol
contracts/mocks/ERC20CappedMock.sol
+1
-2
ERC20MigratorMock.sol
contracts/mocks/ERC20MigratorMock.sol
+1
-2
ERC20MintableMock.sol
contracts/mocks/ERC20MintableMock.sol
+1
-2
ERC20Mock.sol
contracts/mocks/ERC20Mock.sol
+1
-2
ERC20PausableMock.sol
contracts/mocks/ERC20PausableMock.sol
+1
-2
ERC20WithMetadataMock.sol
contracts/mocks/ERC20WithMetadataMock.sol
+1
-2
ERC721FullMock.sol
contracts/mocks/ERC721FullMock.sol
+2
-2
ERC721MintableBurnableImpl.sol
contracts/mocks/ERC721MintableBurnableImpl.sol
+2
-2
ERC721Mock.sol
contracts/mocks/ERC721Mock.sol
+1
-2
ERC721PausableMock.sol
contracts/mocks/ERC721PausableMock.sol
+1
-2
EscrowMock.sol
contracts/mocks/EscrowMock.sol
+1
-2
FinalizableCrowdsaleImpl.sol
contracts/mocks/FinalizableCrowdsaleImpl.sol
+1
-2
IncreasingPriceCrowdsaleImpl.sol
contracts/mocks/IncreasingPriceCrowdsaleImpl.sol
+1
-2
IndividuallyCappedCrowdsaleImpl.sol
contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol
+1
-2
MintedCrowdsaleImpl.sol
contracts/mocks/MintedCrowdsaleImpl.sol
+1
-2
MinterRoleMock.sol
contracts/mocks/MinterRoleMock.sol
+1
-2
PausableMock.sol
contracts/mocks/PausableMock.sol
+1
-3
PauserRoleMock.sol
contracts/mocks/PauserRoleMock.sol
+1
-2
PostDeliveryCrowdsaleImpl.sol
contracts/mocks/PostDeliveryCrowdsaleImpl.sol
+1
-2
PullPaymentMock.sol
contracts/mocks/PullPaymentMock.sol
+1
-2
ReentrancyMock.sol
contracts/mocks/ReentrancyMock.sol
+1
-2
RefundEscrowMock.sol
contracts/mocks/RefundEscrowMock.sol
+1
-2
RefundableCrowdsaleImpl.sol
contracts/mocks/RefundableCrowdsaleImpl.sol
+1
-2
SampleCrowdsaleMock.sol
contracts/mocks/SampleCrowdsaleMock.sol
+2
-3
SecondaryMock.sol
contracts/mocks/SecondaryMock.sol
+1
-2
SignatureBouncerMock.sol
contracts/mocks/SignatureBouncerMock.sol
+1
-2
SignerRoleMock.sol
contracts/mocks/SignerRoleMock.sol
+1
-2
SimpleTokenMock.sol
contracts/mocks/SimpleTokenMock.sol
+1
-2
SplitPaymentMock.sol
contracts/mocks/SplitPaymentMock.sol
+1
-2
TimedCrowdsaleImpl.sol
contracts/mocks/TimedCrowdsaleImpl.sol
+1
-2
TokenTimelockMock.sol
contracts/mocks/TokenTimelockMock.sol
+1
-2
TokenVestingMock.sol
contracts/mocks/TokenVestingMock.sol
+1
-2
No files found.
contracts/mocks/AllowanceCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/emission/AllowanceCrowdsale.sol";
contract AllowanceCrowdsaleImpl is
Initializable, Crowdsale,
AllowanceCrowdsale {
contract AllowanceCrowdsaleImpl is AllowanceCrowdsale {
constructor (
uint256 rate,
...
...
contracts/mocks/BreakInvariantBountyMock.sol
View file @
143ccf7a
...
...
@@ -4,10 +4,9 @@ pragma solidity ^0.4.24;
// See: https://github.com/ethereum/solidity/issues/4871
// solium-disable-next-line max-len
import {BreakInvariantBounty, Target} from "../drafts/BreakInvariantBounty.sol";
import "../Initializable.sol";
contract TargetMock is
Initializable,
Target {
contract TargetMock is Target {
bool private exploited;
function exploitVulnerability() public {
...
...
@@ -23,7 +22,7 @@ contract TargetMock is Initializable, Target {
}
}
contract BreakInvariantBountyMock is
Initializable,
BreakInvariantBounty {
contract BreakInvariantBountyMock is BreakInvariantBounty {
constructor() public {
BreakInvariantBounty.initialize();
}
...
...
contracts/mocks/CappedCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/CappedCrowdsale.sol";
contract CappedCrowdsaleImpl is
Initializable, Crowdsale,
CappedCrowdsale {
contract CappedCrowdsaleImpl is CappedCrowdsale {
constructor (
uint256 rate,
...
...
contracts/mocks/CapperRoleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../access/roles/CapperRole.sol";
contract CapperRoleMock is
Initializable,
CapperRole {
contract CapperRoleMock is CapperRole {
constructor() public {
CapperRole.initialize();
}
...
...
contracts/mocks/ConditionalEscrowMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../payment/ConditionalEscrow.sol";
// mock class using ConditionalEscrow
contract ConditionalEscrowMock is
Initializable,
ConditionalEscrow {
contract ConditionalEscrowMock is ConditionalEscrow {
mapping(address => bool) private _allowed;
constructor() public {
...
...
contracts/mocks/CrowdsaleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../crowdsale/Crowdsale.sol";
contract CrowdsaleMock is
Initializable,
Crowdsale {
contract CrowdsaleMock is Crowdsale {
constructor(uint256 rate, address wallet, IERC20 token) public {
Crowdsale.initialize(rate, wallet, token);
}
...
...
contracts/mocks/DetailedERC20Mock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20.sol";
import "../token/ERC20/ERC20Detailed.sol";
contract ERC20DetailedMock is
Initializable,
ERC20, ERC20Detailed {
contract ERC20DetailedMock is ERC20, ERC20Detailed {
constructor(
string name,
string symbol,
...
...
contracts/mocks/ECDSAMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../cryptography/ECDSA.sol";
...
...
contracts/mocks/ERC20BurnableMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Burnable.sol";
contract ERC20BurnableMock is
Initializable,
ERC20Burnable {
contract ERC20BurnableMock is ERC20Burnable {
constructor(address initialAccount, uint256 initialBalance) public {
_mint(initialAccount, initialBalance);
...
...
contracts/mocks/ERC20CappedMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Capped.sol";
import "./MinterRoleMock.sol";
contract ERC20CappedMock is
Initializable,
ERC20Capped, MinterRoleMock {
contract ERC20CappedMock is ERC20Capped, MinterRoleMock {
constructor(uint256 cap) public {
ERC20Capped.initialize(cap);
...
...
contracts/mocks/ERC20MigratorMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../drafts/ERC20Migrator.sol";
contract ERC20MigratorMock is
Initializable,
ERC20Migrator {
contract ERC20MigratorMock is ERC20Migrator {
constructor(IERC20 legacyToken) public {
ERC20Migrator.initialize(legacyToken);
...
...
contracts/mocks/ERC20MintableMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Mintable.sol";
import "./MinterRoleMock.sol";
contract ERC20MintableMock is
Initializable,
ERC20Mintable, MinterRoleMock {
contract ERC20MintableMock is ERC20Mintable, MinterRoleMock {
constructor() public {
ERC20Mintable.initialize();
...
...
contracts/mocks/ERC20Mock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20.sol";
// mock class using ERC20
contract ERC20Mock is
Initializable,
ERC20 {
contract ERC20Mock is ERC20 {
constructor(address initialAccount, uint256 initialBalance) public {
_mint(initialAccount, initialBalance);
...
...
contracts/mocks/ERC20PausableMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Pausable.sol";
import "./PauserRoleMock.sol";
// mock class using ERC20Pausable
contract ERC20PausableMock is
Initializable,
ERC20Pausable, PauserRoleMock {
contract ERC20PausableMock is ERC20Pausable, PauserRoleMock {
constructor(address initialAccount, uint initialBalance) public {
ERC20Pausable.initialize();
...
...
contracts/mocks/ERC20WithMetadataMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20.sol";
import "../drafts/ERC1046/TokenMetadata.sol";
contract ERC20WithMetadataMock is
Initializable,
ERC20, ERC20WithMetadata {
contract ERC20WithMetadataMock is ERC20, ERC20WithMetadata {
constructor(string tokenURI) public {
ERC20WithMetadata.initialize(tokenURI);
}
...
...
contracts/mocks/ERC721FullMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC721/ERC721Full.sol";
import "../token/ERC721/ERC721Mintable.sol";
import "../token/ERC721/ERC721MetadataMintable.sol";
...
...
@@ -12,11 +11,12 @@ import "../token/ERC721/ERC721Burnable.sol";
* This mock just provides a public mint and burn functions for testing purposes,
* and a public setter for metadata URI
*/
contract ERC721FullMock is
Initializable,
ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {
contract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {
constructor(string name, string symbol) public
{
ERC721Full.initialize(name, symbol);
ERC721Mintable.initialize();
ERC721Burnable.initialize();
}
function exists(uint256 tokenId) public view returns (bool) {
...
...
contracts/mocks/ERC721MintableBurnableImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC721/ERC721Full.sol";
import "../token/ERC721/ERC721Mintable.sol";
import "../token/ERC721/ERC721MetadataMintable.sol";
...
...
@@ -11,13 +10,14 @@ import "../token/ERC721/ERC721Burnable.sol";
* @title ERC721MintableBurnableImpl
*/
contract ERC721MintableBurnableImpl
is
Initializable,
ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {
is ERC721Full, ERC721Mintable, ERC721MetadataMintable, ERC721Burnable {
constructor()
public
{
ERC721Full.initialize("Test", "TEST");
ERC721Mintable.initialize();
ERC721MetadataMintable.initialize();
ERC721Burnable.initialize();
}
}
contracts/mocks/ERC721Mock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC721/ERC721.sol";
...
...
@@ -8,7 +7,7 @@ import "../token/ERC721/ERC721.sol";
* @title ERC721Mock
* This mock just provides a public mint and burn functions for testing purposes
*/
contract ERC721Mock is
Initializable,
ERC721 {
contract ERC721Mock is ERC721 {
constructor() public {
ERC721.initialize();
}
...
...
contracts/mocks/ERC721PausableMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC721/ERC721Pausable.sol";
import "./PauserRoleMock.sol";
...
...
@@ -9,7 +8,7 @@ import "./PauserRoleMock.sol";
* @title ERC721PausableMock
* This mock just provides a public mint, burn and exists functions for testing purposes
*/
contract ERC721PausableMock is
Initializable,
ERC721Pausable, PauserRoleMock {
contract ERC721PausableMock is ERC721Pausable, PauserRoleMock {
constructor() {
ERC721Pausable.initialize();
}
...
...
contracts/mocks/EscrowMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../payment/Escrow.sol";
contract EscrowMock is
Initializable,
Escrow {
contract EscrowMock is Escrow {
constructor() public {
Escrow.initialize();
}
...
...
contracts/mocks/FinalizableCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/FinalizableCrowdsale.sol";
contract FinalizableCrowdsaleImpl is
Initializable, Crowdsale, TimedCrowdsale,
FinalizableCrowdsale {
contract FinalizableCrowdsaleImpl is FinalizableCrowdsale {
constructor (
uint256 openingTime,
...
...
contracts/mocks/IncreasingPriceCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../crowdsale/price/IncreasingPriceCrowdsale.sol";
import "../math/SafeMath.sol";
contract IncreasingPriceCrowdsaleImpl is In
itializable, In
creasingPriceCrowdsale {
contract IncreasingPriceCrowdsaleImpl is IncreasingPriceCrowdsale {
constructor (
uint256 openingTime,
...
...
contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/IndividuallyCappedCrowdsale.sol";
import "./CapperRoleMock.sol";
contract IndividuallyCappedCrowdsaleImpl
is
Initializable,
Crowdsale, IndividuallyCappedCrowdsale, CapperRoleMock {
is Crowdsale, IndividuallyCappedCrowdsale, CapperRoleMock {
constructor(
uint256 rate,
...
...
contracts/mocks/MintedCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Mintable.sol";
import "../crowdsale/emission/MintedCrowdsale.sol";
contract MintedCrowdsaleImpl is
Initializable,
MintedCrowdsale {
contract MintedCrowdsaleImpl is MintedCrowdsale {
constructor (
uint256 rate,
...
...
contracts/mocks/MinterRoleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../access/roles/MinterRole.sol";
contract MinterRoleMock is
Initializable,
MinterRole {
contract MinterRoleMock is MinterRole {
constructor() public {
MinterRole.initialize();
}
...
...
contracts/mocks/PausableMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../lifecycle/Pausable.sol";
import "./PauserRoleMock.sol";
// mock class using Pausable
contract PausableMock is
Initializable,
Pausable, PauserRoleMock {
contract PausableMock is Pausable, PauserRoleMock {
bool public drasticMeasureTaken;
uint256 public count;
...
...
contracts/mocks/PauserRoleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../access/roles/PauserRole.sol";
contract PauserRoleMock is
Initializable,
PauserRole {
contract PauserRoleMock is PauserRole {
constructor() public {
PauserRole.initialize();
}
...
...
contracts/mocks/PostDeliveryCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/PostDeliveryCrowdsale.sol";
contract PostDeliveryCrowdsaleImpl is
Initializable, Crowdsale, TimedCrowdsale,
PostDeliveryCrowdsale {
contract PostDeliveryCrowdsaleImpl is PostDeliveryCrowdsale {
constructor (
uint256 openingTime,
...
...
contracts/mocks/PullPaymentMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../payment/PullPayment.sol";
// mock class using PullPayment
contract PullPaymentMock is
Initializable,
PullPayment {
contract PullPaymentMock is PullPayment {
constructor() public payable {
PullPayment.initialize();
...
...
contracts/mocks/ReentrancyMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../utils/ReentrancyGuard.sol";
import "./ReentrancyAttack.sol";
contract ReentrancyMock is
Initializable,
ReentrancyGuard {
contract ReentrancyMock is ReentrancyGuard {
uint256 public counter;
...
...
contracts/mocks/RefundEscrowMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../payment/RefundEscrow.sol";
contract RefundEscrowMock is
Initializable,
RefundEscrow {
contract RefundEscrowMock is RefundEscrow {
constructor(address beneficiary) public {
RefundEscrow.initialize(beneficiary);
}
...
...
contracts/mocks/RefundableCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/ERC20Mintable.sol";
import "../crowdsale/distribution/RefundableCrowdsale.sol";
contract RefundableCrowdsaleImpl is
Initializable,
Crowdsale, TimedCrowdsale, RefundableCrowdsale {
contract RefundableCrowdsaleImpl is Crowdsale, TimedCrowdsale, RefundableCrowdsale {
constructor (
uint256 openingTime,
...
...
contracts/mocks/SampleCrowdsaleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../examples/SampleCrowdsale.sol";
contract SampleCrowdsaleTokenMock is
Initializable,
SampleCrowdsaleToken {
contract SampleCrowdsaleTokenMock is SampleCrowdsaleToken {
constructor() public {
SampleCrowdsaleToken.initialize();
}
}
contract SampleCrowdsaleMock is
Initializable,
SampleCrowdsale {
contract SampleCrowdsaleMock is SampleCrowdsale {
constructor(
uint256 openingTime,
uint256 closingTime,
...
...
contracts/mocks/SecondaryMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../ownership/Secondary.sol";
contract SecondaryMock is
Initializable,
Secondary {
contract SecondaryMock is Secondary {
constructor() public {
Secondary.initialize();
}
...
...
contracts/mocks/SignatureBouncerMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../drafts/SignatureBouncer.sol";
import "./SignerRoleMock.sol";
contract SignatureBouncerMock is
Initializable,
SignatureBouncer, SignerRoleMock {
contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock {
constructor() public {
SignatureBouncer.initialize();
}
...
...
contracts/mocks/SignerRoleMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../access/roles/SignerRole.sol";
contract SignerRoleMock is
Initializable,
SignerRole {
contract SignerRoleMock is SignerRole {
constructor() public {
SignerRole.initialize();
}
...
...
contracts/mocks/SimpleTokenMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../examples/SimpleToken.sol";
contract SimpleTokenMock is
Initializable,
SimpleToken {
contract SimpleTokenMock is SimpleToken {
constructor() public {
SimpleToken.initialize();
}
...
...
contracts/mocks/SplitPaymentMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../payment/SplitPayment.sol";
contract SplitPaymentMock is
Initializable,
SplitPayment {
contract SplitPaymentMock is SplitPayment {
constructor(address[] payees, uint256[] shares) public {
SplitPayment.initialize(payees, shares);
}
...
...
contracts/mocks/TimedCrowdsaleImpl.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/TimedCrowdsale.sol";
contract TimedCrowdsaleImpl is
Initializable, Crowdsale,
TimedCrowdsale {
contract TimedCrowdsaleImpl is TimedCrowdsale {
constructor (
uint256 openingTime,
...
...
contracts/mocks/TokenTimelockMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../token/ERC20/TokenTimelock.sol";
contract TokenTimelockMock is
Initializable,
TokenTimelock {
contract TokenTimelockMock is TokenTimelock {
constructor(
IERC20 token,
address beneficiary,
...
...
contracts/mocks/TokenVestingMock.sol
View file @
143ccf7a
pragma solidity ^0.4.24;
import "../Initializable.sol";
import "../drafts/TokenVesting.sol";
contract TokenVestingMock is
Initializable,
TokenVesting {
contract TokenVestingMock is TokenVesting {
constructor(
address beneficiary,
uint256 start,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment