1.0.1 • Published 5 years ago

@laborx/airdrop-contracts v1.0.1

Weekly downloads
-
License
AGPL-3.0
Repository
gitlab
Last release
5 years ago

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)