Skip to content

Instantly share code, notes, and snippets.

@satran004
Created August 10, 2023 13:18
Show Gist options
  • Save satran004/e8c3db5c28a9bce9ee5a9169ce117837 to your computer and use it in GitHub Desktop.
Save satran004/e8c3db5c28a9bce9ee5a9169ce117837 to your computer and use it in GitHub Desktop.
QuickTx - Contract Test
import com.bloxbean.cardano.aiken.AikenTransactionEvaluator;
import com.bloxbean.cardano.client.account.Account;
import com.bloxbean.cardano.client.address.AddressProvider;
import com.bloxbean.cardano.client.api.exception.ApiException;
import com.bloxbean.cardano.client.api.model.Amount;
import com.bloxbean.cardano.client.api.model.Result;
import com.bloxbean.cardano.client.api.model.Utxo;
import com.bloxbean.cardano.client.backend.api.BackendService;
import com.bloxbean.cardano.client.backend.api.DefaultProtocolParamsSupplier;
import com.bloxbean.cardano.client.backend.api.DefaultUtxoSupplier;
import com.bloxbean.cardano.client.backend.blockfrost.service.BFBackendService;
import com.bloxbean.cardano.client.common.model.Networks;
import com.bloxbean.cardano.client.function.helper.ScriptUtxoFinders;
import com.bloxbean.cardano.client.function.helper.SignerProviders;
import com.bloxbean.cardano.client.plutus.spec.BigIntPlutusData;
import com.bloxbean.cardano.client.plutus.spec.PlutusV2Script;
import com.bloxbean.cardano.client.quicktx.QuickTxBuilder;
import com.bloxbean.cardano.client.quicktx.ScriptTx;
import com.bloxbean.cardano.client.quicktx.Tx;
import java.util.List;
public class ContractTest {
public void contractExec() throws ApiException {
BackendService backendService = new BFBackendService("http://localhost:8080/api/v1/", "");
//Network network = new Network(0b0000, 42);
DefaultUtxoSupplier utxoSupplier = new DefaultUtxoSupplier(backendService.getUtxoService());
Account senderAccount =
new Account(
Networks.testnet(),
"damp wish scrub sentence vibrant gauge tumble raven game extend winner acid side amused vote edge affair buzz hospital slogan patient drum day vital");
String senderAddress = senderAccount.baseAddress();
System.out.println(senderAddress);
String cborHexScript = "590153590150010000323232323232323232322223232533300a3232533300c3370e9001000899199bb448812102c66e7d8966b5c555af5805989da9fbf8db95e15631ce358c3a1710c96267906300488120aadf7de782034fbe3d3db2cb13c0cd91bf41cb08fac7bd61d54453cf6e82b45000488140dc4dc264a9fef17a3f253449cf8c397ab6f16fb3d63d86940b5586823dfd02ae3b461bb4336b5ecbaefd6627aa922efc048fec0c881c10c4c9428fca69c132a200300a00214a060140026600c601000690010a4c2c6400a64a66601466e1d200000113232533300f3011002149858dd7180780098040028b18040021900199299980499b87480000044c8c94ccc038c04000852616375c601c002600e0062c600e0046600200290001111199980399b8700100300b233330050053370000890011806800801001118029baa001230033754002ae6955ceaab9e5573eae855d11";
// PlutusScript plutusScript = PlutusBlueprintUtil.getPlutusScriptFromCompiledCode(cborHexScript, PlutusVersion.v2);
PlutusV2Script plutusScript =
PlutusV2Script.builder()
.cborHex("5907a65907a3010000323322323232323232323232323232323322323232323222232325335323232333573466e1ccc07000d200000201e01d3333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd405c060d5d0a80619a80b80c1aba1500b33501701935742a014666aa036eb94068d5d0a804999aa80dbae501a35742a01066a02e0446ae85401cccd5406c08dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01881801709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03103002e135573ca00226ea8004d5d09aba2500223263202c33573805a05805426aae7940044dd50009aba1500533501775c6ae854010ccd5406c07c8004d5d0a801999aa80dbae200135742a00460426ae84d5d1280111931901419ab9c029028026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01b01a018375a00a6eb4014405c4c98c805ccd5ce24810350543500017135573ca00226ea800448c88c008dd6000990009aa80b911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355014223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200923333573466e1d40092000200923263200633573800e00c00800626aae74dd5000a4c240029210350543100320013550032225335333573466e1c0092000005004100113300333702004900119b80002001122002122001112323001001223300330020020011")
.build();
String scriptAddress = AddressProvider.getEntAddress(plutusScript, Networks.testnet()).toBech32();
System.out.println("Script Address >> " + scriptAddress);
BigIntPlutusData plutusData = BigIntPlutusData.of(8);
Tx tx = new Tx();
tx.payToContract(scriptAddress, List.of(Amount.ada(1000.0)), plutusData)
.from(senderAddress);
QuickTxBuilder quickTxBuilder = new QuickTxBuilder(backendService);
Result<String> result =
quickTxBuilder
.compose(tx)
.feePayer(senderAddress)
.withSigner(SignerProviders.signerFrom(senderAccount))
.completeAndWait(System.out::println);
System.out.println("Result " + result.isSuccessful());
Utxo sumUtxo = ScriptUtxoFinders.findFirstByInlineDatum(utxoSupplier, scriptAddress, plutusData).get();
System.out.println(sumUtxo);
ScriptTx scriptTx =
new ScriptTx()
.collectFrom(sumUtxo, BigIntPlutusData.of(36))
.attachSpendingValidator(plutusScript)
.payToAddress(senderAddress, Amount.ada(9.0))
.withChangeAddress(scriptAddress, plutusData);
Result<String> result1 =
quickTxBuilder
.compose(scriptTx)
.feePayer(senderAddress)
.withSigner(SignerProviders.signerFrom(senderAccount))
.withTxEvaluator(
new AikenTransactionEvaluator(
utxoSupplier,
new DefaultProtocolParamsSupplier(backendService.getEpochService())))
.completeAndWait(System.out::println);
System.out.println(result1.getResponse());
System.out.println("Result2 " + result1.isSuccessful());
}
public static void main(String[] args) throws ApiException {
ContractTest test = new ContractTest();
test.contractExec();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment