Skip to main content
Version: Next

Simple NEAR Drops

This part of the cookbook contains a quick guide on the simple NEAR drop.

Getting Started

For the cookbook, you will need the following installed.

  1. Node JS
  2. Keypom JS SDK
note

These scripts will not run without the proper setup shown in the introduction page.

Creating a Simple Drop

A drop is the fundamental building block of Keypom. It is a collection of access keys that all share the same properties. A simple drop allows you to send $NEAR by sharing those access keys in the form of a linkdrop.

// Creating drop with 2 single use keys
const {keys} = await createDrop({
account: fundingAccount,
numKeys: 2,
depositPerUseNEAR: "0.1",
});

console.log(keys)
caution

createDrop is limited to adding 50 password protected keys or 100 non-protected keys at a time. To add more keys, see the large drops example below.


Creating a Large Drop

Adding keys, either using createDrop or addKeys is limited to 50 password protected or 100 non-protected keys. To bypass this, the drop can be created first and then the keys can be added by looping addKeys.

// Creating drop with 0 single use keys
let {dropId} = await createDrop({
account: fundingAccount,
depositPerUseNEAR: "0.001",
});

let numKeys = 200
let keysAdded = 0;
let allSecretKeys = [];
while (keysAdded < numKeys) {
const keysToAdd = Math.min(50, numKeys - keysAdded);
const {secretKeys, publicKeys} = await generateKeys({
numKeys: keysToAdd,
});
await addKeys({
account: fundingAccount,
dropId,
publicKeys
});
keysAdded += keysToAdd;
allSecretKeys = allSecretKeys.concat(secretKeys);
}

Delete Drop

A drop can be deleted manually at any time using deleteDrops. This will refund all unclaimed key balances back to the drop funder's Keypom balance.

// Get all the drops for a given user
let drops = await getDrops({accountId: "minqi.testnet"});

// Delete all the drops currently funded by `minqi.testnet`
await deleteDrops({
account: fundingAccount,
drops
})

// Delete 2 seperate drops given their IDs
await deleteDrops({
account: fundingAccount,
dropIds: ["123123123123123", "12391238012380123"]
})