Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save 1cor13/22c1ed56a541f7d8f269c90afc2bfdb7 to your computer and use it in GitHub Desktop.
Save 1cor13/22c1ed56a541f7d8f269c90afc2bfdb7 to your computer and use it in GitHub Desktop.
NativeScriptStaking.java
void multisigNativeScript_stakeKeyRegistration() throws CborSerializationException {
Policy policy = PolicyUtil.createMultiSigScriptAllPolicy("staking-scripts", 2);
var scriptAddress = AddressProvider.getBaseAddress(policy.getPolicyScript(), policy.getPolicyScript(),
Networks.testnet());
var scriptStakeAddess = AddressProvider.getRewardAddress(policy.getPolicyScript(), Networks.testnet());
System.out.println("Base Address: " + scriptAddress.toBech32());
System.out.printf("Script Stake Address: " + scriptStakeAddess.toBech32());
//Transfer some fund to the scriptAddress
System.out.println("Transfer fund to multi-script Address");
Tx registerStakeAndTransferTx = new Tx()
.payToAddress(scriptAddress.toBech32(), Amount.ada(1000))
.registerStakeAddress(scriptStakeAddess.toBech32())
.from(sender1Addr);
QuickTxBuilder quickTxBuilder = new QuickTxBuilder(backendService);
var result = quickTxBuilder.compose(registerStakeAndTransferTx)
.withSigner(SignerProviders.signerFrom(sender1))
.completeAndWait(System.out::println);
System.out.println(result);
checkIfUtxoAvailable(result.getValue(), sender1Addr);
//Delegate St
String poolId = "pool1wvqhvyrgwch4jq9aa84hc8q4kzvyq2z3xr6mpafkqmx9wce39zy";
Tx delegationTx = new Tx()
.delegateTo(scriptStakeAddess.toBech32(), poolId)
.from(scriptAddress.toBech32());
result = quickTxBuilder.compose(delegationTx)
.feePayer(scriptAddress.toBech32())
.withSigner(SignerProviders.signerFrom(policy))
.additionalSignersCount(1)
.preBalanceTx((txBuilderContext, transaction) -> {
transaction.getWitnessSet().getNativeScripts().add(policy.getPolicyScript());
})
.withTxInspector((txn) -> System.out.println(JsonUtil.getPrettyJson(txn)))
.completeAndWait(msg -> System.out.println(msg));
System.out.println(result);
assertTrue(result.isSuccessful());
checkIfUtxoAvailable(result.getValue(), sender1Addr);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment