Make sure this is just a script and not your actual application. You don't want the Data Union client to be configured with the admins private keyin yourclient application.
const PRIVATE_KEY_ADMIN = process.env.PRIVATE_KEY;
// Paste the contract address of your newly created data union
const DU_CONTRACT_ADDRESS = "0x0D483E10612F327FC11965Fc82E90dC19b141641"
const DU = new DataUnionClient({
auth: {
privateKey: PRIVATE_KEY,
},
chain: 'polygon',
});
const dataUnion = await DU.getDataUnion(DU_CONTRACT_ADDRESS);
const tx = await dataUnion.addMembers(['0xabcd', "0x1234"]);
Or let members join themselves via our default :
Your script:
const PRIVATE_KEY_ADMIN = process.env.PRIVATE_KEY;
// Paste the contract address of your newly created data union
const DU_CONTRACT_ADDRESS = "0x0D483E10612F327FC11965Fc82E90dC19b141641"
const DU = new DataUnionClient({
auth: {
privateKey: PRIVATE_KEY_ADMIN,
},
chain: 'polygon',
});
const dataUnion = await DU.getDataUnion(
DATA_UNION_CONTRACT_ADDRESS
);
// returns an object with:
// your secret, secret_name, data union contract address and the chain
const sharedSecret = dataUnion.createSecret($custum_secret_name);
In your client app
// get your clients wallet
const WALLET_PROVIDER = // walletProviderOfYourChoice;
// Paste the contract address of your newly created data union
const DU_CONTRACT_ADDRESS = "0x0D483E10612F327FC11965Fc82E90dC19b141641";
const SHARED_SECRET = process.env.SHARED_SECRET;
const DU = new DataUnionClient({
auth: WALLET_PROVIDER,
chain: 'polygon',
});
const dataUnion = await DU.getDataUnion(
DATA_UNION_CONTRACT_ADDRESS
);
const joinResponse = dataUnion.join({secret: SHARED_SECRET});
Withdraw Earnings
After this transaction your users will be able to see and withdraw their earnings. With every withdraw transaction the revenue will get refreshed automatically.
In your client app
// get your clients wallet
const WALLET_PROVIDER = // walletProviderOfYourChoice;
// Paste the contract address of your newly created data union
const DU_CONTRACT_ADDRESS = "0x0D483E10612F327FC11965Fc82E90dC19b141641";
const DU = new DataUnionClient({
auth: {
WALLET_PROVIDER
},
chain: 'polygon',
});
const dataUnion = await DU.getDataUnion(DU_CONTRACT_ADDRESS);
const earnings = await dataUnion.getWithdrawableEarnings(
'0x008ef9bB0d80829ea82e53fFE40F35B4eaDd1319'
);
const tx = await dataUnion.withdrawAll()
When the contract receives revenue in DATA token you need to refresh the contract manually with the contract function refreshRevenue(). The will do this automatically for you.