@laborx/airdrop-contracts
v1.0.1
Published
Provides Ethereum smart contract that allows to perform token airdrop using merkle tree and merkle proof to record and check allowance for token withdrawals.
Downloads
4
Keywords
Readme
Airdrop
Provides Ethereum smart contract that allows to perform token airdrop using merkle tree and merkle proof to record and check allowance for token withdrawals.
Using
Install package using npm or yarn package managers:
npm install @laborx/airdrop-contracts
or
yarn add @laborx/airdrop-contracts
Contracts
Import smart contract as you usually do with external libraries
import "@laborx/airdrop-contracts/contracts/Airdrop.sol";
contract ExtendedAirdrop is Airdrop {
// ...
}
Airdrop smart contract
It allowes to:
- provide basic token (ERC20 or ERC223 standards) that will be used for airdropping;
- provide airdrop campaign name;
- setting up merkle root of a Merkle tree that is based on list of records of allowed withdrawals
- claiming tokens if you are allowed to do that; user needs to provide a merkle proof to finally withdraw tokens.
For managing Merkle trees for airdrops we use package @laborx/merkletree
.
More information about Airdrop contract you can find in documentation;
ScopedAirdrop smart contract
- introduces term of "program" that could be deposited by different (more than one at once) tokens;
- allows to claim several tokens providing proof for each of them.
More information about ScopedAirdropInterface interface you can find in documentation;
Support
There are two main areas for support functionality:
- deployment scripts
- constants
Deployment scripts
Deployment of a contract could be run with truffle framework by providing deployment context from @truffle-types/deployment-context
package.
const deployerAccount = "0x...";
const deploymentContext = new ContractDeploymentContext(
web3,
artifacts,
undefined,
"path to deployed-addresses.json file"
);
await AirdropDeployment.deployScopeAirdrop(
deploymentContext,
deployerAccount,
{
airdrop: "AirdropContractKey",
airdropBackendProvider:
"AirdropBackendProviderContractKey",
airdropLib: "AirdropLibraryContractKey"
},
{
airdrop: { redeploy: false, owners: [] },
airdropBackendProvider: {
redeploy: false,
updateLib: false
},
airdropLib: { redeploy: false }
}
);
Support constants
Provides the next constants:
- revert reasons (
AirdropRevertReasons
,ScopedAirdropRevertReasons
,BytesLibRevertReasons
) - error codes (
errorsLibrary
) - names for deployed addresses file (
ContractNames
)