Skip to content

Instantly share code, notes, and snippets.

@judeebene
Last active April 25, 2022 18:41
Show Gist options
  • Save judeebene/2c647c2212d0d7aaad5c6854e533fea1 to your computer and use it in GitHub Desktop.
Save judeebene/2c647c2212d0d7aaad5c6854e533fea1 to your computer and use it in GitHub Desktop.
offer datum
//based on https://gist.github.com/judeebene/021b9c77bb761378e59a8e657cb76cbc datum.json
const serializeOfferDatum = ({
tradeOwnerAddress,
assetPolicyId,
assetSymbol,
quantity,
mediatorAddress,
tresuryAddress,
SwapDeadLine,
}) => {
const offerFields = loader.Cardano.PlutusList.new();
// //1 tradeOwnerAddress
offerFields.add(loader.Cardano.PlutusData.new_bytes(fromHex(tradeOwnerAddress)));
//2tokenmap
offerFields.add(
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetPolicyId)),
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetSymbol)),
loader.Cardano.PlutusData.new_bytes(fromHex(quantity)),
),
),
);
//3 list of Recipients
// seller, volibraTresury
// // 3.1 seller
const recipient1 = loader.Cardano.PlutusList.new();
recipient1.add(loader.Cardano.PlutusData.new_bytes(fromHex(tradeOwnerAddress)));
tokenmap of recipients 1
recipient1.add(
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetPolicyId)),
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetSymbol)),
loader.Cardano.PlutusData.new_bytes(fromHex(quantity)),
),
),
);
// 3.2 volibraTresury
const recipient2 = loader.Cardano.PlutusList.new();
recipient2.add(loader.Cardano.PlutusData.new_bytes(fromHex(tresuryAddress)));
//tokenmap of recipients 2
recipient2.add(
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetPolicyId)),
loader.Cardano.PlutusData.new_map(
loader.Cardano.PlutusData.new_bytes(fromHex(assetSymbol)),
loader.Cardano.PlutusData.new_bytes(fromHex(quantity)),
),
),
);
const recipientsList = loader.Cardano.PlutusList.new();
recipientsList.add(
loader.Cardano.PlutusData.new_constr_plutus_data(
loader.Cardano.ConstrPlutusData.new(Loader.Cardano.BigNum.from_str('0'), recipient1),
),
);
recipientsList.add(
loader.Cardano.PlutusData.new_constr_plutus_data(
loader.Cardano.ConstrPlutusData.new(Loader.Cardano.BigNum.from_str('0'), recipient2),
),
);
offerFields.add(loader.Cardano.PlutusData.new_list(recipientsList));
// //4 timestamp
offerFields.add(
loader.Cardano.PlutusData.new_integer(loader.Cardano.BigInt.from_str(`${SwapDeadLine}`)),
);
// //5 mediator
offerFields.add(loader.Cardano.PlutusData.new_bytes(fromHex(mediatorAddress)));
const datum = loader.Cardano.PlutusData.new_constr_plutus_data(
loader.Cardano.ConstrPlutusData.new(loader.Cardano.BigNum.from_str('0'), offerFields),
);
return datum;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment