Skip to content

Commit

Permalink
minor improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
RaaCT0R committed Nov 21, 2023
1 parent f40d495 commit 46ea7a6
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 25 deletions.
29 changes: 4 additions & 25 deletions packages/chains/cardano/lib/CardanoChain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,31 +225,10 @@ class CardanoChain extends AbstractUtxoChain<CardanoUtxo> {
);

// create change output
const changeBoxMultiAsset = CardanoWasm.MultiAsset.new();
remainingAssets.tokens.forEach((asset) => {
const assetInfo = asset.id.split('.');
const policyId: CardanoWasm.ScriptHash = CardanoWasm.ScriptHash.from_hex(
assetInfo[0]
);
const assetName: CardanoWasm.AssetName = CardanoWasm.AssetName.new(
Buffer.from(assetInfo[1], 'hex')
);
changeBoxMultiAsset.set_asset(
policyId,
assetName,
CardanoUtils.bigIntToBigNum(asset.value)
);
});
const changeBoxLovelace = CardanoWasm.BigNum.from_str(
(remainingAssets.nativeToken - this.configs.fee).toString()
);

const changeAmount: CardanoWasm.Value =
CardanoWasm.Value.new(changeBoxLovelace);
changeAmount.set_multiasset(changeBoxMultiAsset);
const changeBox = CardanoWasm.TransactionOutput.new(
CardanoWasm.Address.from_bech32(this.configs.addresses.lock),
changeAmount
remainingAssets.nativeToken -= this.configs.fee;
const changeBox = CardanoUtils.createTransactionOutput(
remainingAssets,
this.configs.addresses.lock
);
txBuilder.add_output(changeBox);

Expand Down
36 changes: 36 additions & 0 deletions packages/chains/cardano/lib/CardanoUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,42 @@ class CardanoUtils {
value: candidate.value,
assets: structuredClone(candidate.assets),
});

/**
* creates a box candidate by assets and address
* @param assets
* @param address
* @returns
*/
static createTransactionOutput = (
assets: AssetBalance,
address: string
): CardanoWasm.TransactionOutput => {
const changeBoxMultiAsset = CardanoWasm.MultiAsset.new();
assets.tokens.forEach((asset) => {
const assetInfo = asset.id.split('.');
const policyId: CardanoWasm.ScriptHash = CardanoWasm.ScriptHash.from_hex(
assetInfo[0]
);
const assetName: CardanoWasm.AssetName = CardanoWasm.AssetName.new(
Buffer.from(assetInfo[1], 'hex')
);
changeBoxMultiAsset.set_asset(
policyId,
assetName,
CardanoUtils.bigIntToBigNum(asset.value)
);
});

const changeAmount: CardanoWasm.Value = CardanoWasm.Value.new(
CardanoWasm.BigNum.from_str(assets.nativeToken.toString())
);
changeAmount.set_multiasset(changeBoxMultiAsset);
return CardanoWasm.TransactionOutput.new(
CardanoWasm.Address.from_bech32(address),
changeAmount
);
};
}

export default CardanoUtils;

0 comments on commit 46ea7a6

Please sign in to comment.