Forked from satran004/gist:a3cec5467199383c5378531e78363351
Created
April 4, 2025 13:35
-
-
Save 1cor13/22c1ed56a541f7d8f269c90afc2bfdb7 to your computer and use it in GitHub Desktop.
NativeScriptStaking.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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