buckyou
v1.0.4
Published
Locker Contract SDK for send.buckyou.io
Downloads
9
Readme
Buck You Send - Locker SDK
Buck You Send (https://send.buckyou.io) is the advanced version of ZK Send, it is a decentralized tool that allows you to send any objects securely to new users with sponsored transaction. It leverages dynamic object fields and Object Bag to create a lock, enabling BLS-signatured-based access management and support any and many assets at the same time.
This is the Locker SDK from Buck You Send, which includes the implementation of how to lock objects into a smart contract using a Public Key and retrieve them with the signature of a Private Key. The goal is to enable any project utils the Smart Contract of Buck You Send to send and receive assets on Blockchain.
How to use?
1. Create a locker
import { BuckYouLocker } from "buckyou";
const locker = new BuckYouLocker();
2. Add Objects or Coins
locker.addObject({
objectId,
objectType
});
locker.addCoin({
coinType,
amount,
});
3. Send the transaction to lock it
let txb = await locker.createLockTransaction({
creatorAddress: address,
useSponsor: true,
});
const { bytes, signature } = txb.sign({ client, signer: keypair });
const result = await client.executeTransactionBlock({
transactionBlock: bytes,
signature,
});
4. Get the link
locker.getLink()
You may use private key or public key to re-construct the locker and create the claim page yourself:
let privateKey = locker.getPrivateKey()
let newLocker = BuckYouLocker.fromPrivateKey({ privateKey });
let publicKey = locker.getPublicKey();
let newLocker = BuckYouLocker.fromPublicKey({ publicKey });
Get Objects in Bag
let objectsInBag = locker.getObjectsInBag();
if (
objectsInBag.length == 1 &&
objectsInBag[0].objectType.startsWith("0x2::coin::Coin")
) {
console.log("single-coin");
} else if (objectsInBag.length == 1) {
console.log("single-nft");
} else {
console.log("multiple-objects");
}
Unlock and Claim by Private Key
let locker = BuckYouLocker.fromPrivateKey({ privateKey });
let tx = await locker.createUnlockTransaction({
unlockerAddress: address,
});
const { bytes, signature } = txb.sign({ client, signer: keypair });
const result = await client.executeTransactionBlock({
transactionBlock: bytes,
signature,
});
Locker Creator Re-Claim by Public Key
Only the creator can use locker with public key to reclaim. The public key can be access by Transaction Events or you can store it somewhere publicly.
let locker = BuckYouLocker.fromPublicKey({ publicKey });
let tx = await locker.createCreatorReclaimTransaction({
unlockerAddress: address,
});
const { bytes, signature } = txb.sign({ client, signer: keypair });
const result = await client.executeTransactionBlock({
transactionBlock: bytes,
signature,
});