Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

donateToTreasury(currentTreasuryVal, donationAmt) api in QuickTx #415

Merged
merged 4 commits into from
Aug 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 BloxBean Project
Copyright (c) 2024 BloxBean Project

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.bloxbean.cardano.client.backend.blockfrost.common.Constants;
import com.bloxbean.cardano.client.backend.blockfrost.service.BFBackendService;
import com.bloxbean.cardano.client.common.model.Networks;
import com.bloxbean.cardano.client.crypto.cip1852.DerivationPath;
import com.bloxbean.cardano.client.function.helper.SignerProviders;
import com.bloxbean.cardano.client.governance.DRepId;
import com.bloxbean.cardano.client.spec.UnitInterval;
Expand All @@ -24,7 +25,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;

//TODO -- Update tests to use Yaci DevKit Sanchonet
public class GovernanceTxIT extends QuickTxBaseIT {
public class GovernanceTxIT extends TestDataBaseIT {
BackendService backendService;
Account sender1;
Account sender2;
Expand Down Expand Up @@ -52,15 +53,11 @@ void setup() {
backendService = getBackendService();
quickTxBuilder = new QuickTxBuilder(backendService);

//addr_test1qp73ljurtknpm5fgey5r2y9aympd33ksgw0f8rc5khheg83y35rncur9mjvs665cg4052985ry9rzzmqend9sqw0cdksxvefah
// String senderMnemonic = "drive useless envelope shine range ability time copper alarm museum near flee wrist live type device meadow allow churn purity wisdom praise drop code";
String senderMnemonic = "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 senderMnemonic = "test test test test test test test test test test test test test test test test test test test test test test test sauce";
sender1 = new Account(Networks.testnet(), senderMnemonic);
sender1Addr = sender1.baseAddress();

//addr_test1qz5fcpvkg7pekqvv9ld03t5sx2w2c2fac67fzlaxw5844s83l4p6tr389lhgcpe4797kt7xkcxqvcc4a6qjshzsmta8sh3ncs4
String sender2Mnemonic = "access else envelope between rubber celery forum brief bubble notice stomach add initial avocado current net film aunt quick text joke chase robust artefact";
sender2 = new Account(Networks.testnet(), sender2Mnemonic);
sender2 = new Account(Networks.testnet(), senderMnemonic, DerivationPath.createExternalAddressDerivationPathForAccount(1));
sender2Addr = sender2.baseAddress();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,19 @@
import com.bloxbean.cardano.client.backend.model.TransactionContent;
import com.bloxbean.cardano.client.util.JsonUtil;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Optional;

public class QuickTxBaseIT {
protected String BLOCKFROST = "blockfrost";
protected String KOIOS = "koios";
protected String DEVKIT = "devkit";
protected String backendType = DEVKIT;
public static final String DEVKIT_ADMIN_BASE_URL = "http://localhost:10000/";
protected static String BLOCKFROST = "blockfrost";
protected static String KOIOS = "koios";
protected static String DEVKIT = "devkit";
protected static String backendType = DEVKIT;

public BackendService getBackendService() {
if (BLOCKFROST.equals(backendType)) {
Expand Down Expand Up @@ -73,4 +78,38 @@ protected void checkIfUtxoAvailable(String txHash, String address) {
}
}

protected static void topUpFund(String address, long adaAmount) {
try {
// URL to the top-up API
String url = DEVKIT_ADMIN_BASE_URL + "local-cluster/api/addresses/topup";
URL obj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();

// Set request method to POST
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; utf-8");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);

// Create JSON payload
String jsonInputString = String.format("{\"address\": \"%s\", \"adaAmount\": %d}", address, adaAmount);

// Send the request
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}

// Check the response code
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println("Funds topped up successfully.");
} else {
System.out.println("Failed to top up funds. Response code: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.bloxbean.cardano.client.transaction.spec.*;
import com.bloxbean.cardano.client.transaction.spec.script.ScriptPubkey;
import com.bloxbean.cardano.client.util.JsonUtil;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand All @@ -43,22 +44,22 @@

public class QuickTxBuilderIT extends QuickTxBaseIT {
BackendService backendService;
Account sender1;
Account sender2;
static Account sender1;
static Account sender2;

String sender1Addr;
String sender2Addr;
static String sender1Addr;
static String sender2Addr;

String receiver1 = "addr_test1qz3s0c370u8zzqn302nppuxl840gm6qdmjwqnxmqxme657ze964mar2m3r5jjv4qrsf62yduqns0tsw0hvzwar07qasqeamp0c";
String receiver2 = "addr_test1qqwpl7h3g84mhr36wpetk904p7fchx2vst0z696lxk8ujsjyruqwmlsm344gfux3nsj6njyzj3ppvrqtt36cp9xyydzqzumz82";
String receiver3 = "addr_test1qqqvjp4ffcdqg3fmx0k8rwamnn06wp8e575zcv8d0m3tjn2mmexsnkxp7az774522ce4h3qs4tjp9rxjjm46qf339d9sk33rqn";
static String receiver1 = "addr_test1qz3s0c370u8zzqn302nppuxl840gm6qdmjwqnxmqxme657ze964mar2m3r5jjv4qrsf62yduqns0tsw0hvzwar07qasqeamp0c";
static String receiver2 = "addr_test1qqwpl7h3g84mhr36wpetk904p7fchx2vst0z696lxk8ujsjyruqwmlsm344gfux3nsj6njyzj3ppvrqtt36cp9xyydzqzumz82";
static String receiver3 = "addr_test1qqqvjp4ffcdqg3fmx0k8rwamnn06wp8e575zcv8d0m3tjn2mmexsnkxp7az774522ce4h3qs4tjp9rxjjm46qf339d9sk33rqn";

QuickTxBuilder quickTxBuilder;

@BeforeEach
void setup() {
backendService = getBackendService();
quickTxBuilder = new QuickTxBuilder(backendService);
@BeforeAll
static void setupAll() {
//Set the backend type
backendType = DEVKIT;

//addr_test1qp73ljurtknpm5fgey5r2y9aympd33ksgw0f8rc5khheg83y35rncur9mjvs665cg4052985ry9rzzmqend9sqw0cdksxvefah
String senderMnemonic = "drive useless envelope shine range ability time copper alarm museum near flee wrist live type device meadow allow churn purity wisdom praise drop code";
Expand All @@ -69,6 +70,17 @@ void setup() {
String sender2Mnemonic = "access else envelope between rubber celery forum brief bubble notice stomach add initial avocado current net film aunt quick text joke chase robust artefact";
sender2 = new Account(Networks.testnet(), sender2Mnemonic);
sender2Addr = sender2.baseAddress();

if (backendType.equals(DEVKIT)) {
topUpFund(sender1Addr, 50000);
topUpFund(sender2Addr, 50000);
}
}

@BeforeEach
void setup() {
backendService = getBackendService();
quickTxBuilder = new QuickTxBuilder(backendService);
}

@Test
Expand Down Expand Up @@ -870,4 +882,36 @@ void twoTxs_withDifferentSenders() {
checkIfUtxoAvailable(result.getValue(), sender1Addr);
}

@Test
void donateToTreasury() {
QuickTxBuilder quickTxBuilder = new QuickTxBuilder(backendService);
Tx tx = new Tx()
.donateToTreasury(BigInteger.ZERO, adaToLovelace(2))
.attachMetadata(MessageMetadata.create().add("This is a treasury donation message"))
.from(sender1Addr);

Result<String> result = quickTxBuilder.compose(tx)
.withSigner(SignerProviders.signerFrom(sender1))
.completeAndWait(System.out::println);

assertThat(result.isSuccessful()).isTrue();
}

@Test
void donate_withOtherPayment() {
QuickTxBuilder quickTxBuilder = new QuickTxBuilder(backendService);
Tx tx = new Tx()
.donateToTreasury(BigInteger.ZERO, adaToLovelace(3.5))
.payToAddress(receiver1, Amount.ada(1.5))
.payToAddress(receiver2, Amount.ada(2.5))
.attachMetadata(MessageMetadata.create().add("This is a treasury donation message"))
.from(sender1Addr);

Result<String> result = quickTxBuilder.compose(tx)
.withSigner(SignerProviders.signerFrom(sender1))
.completeAndWait(System.out::println);

assertThat(result.isSuccessful()).isTrue();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,37 +43,31 @@ public class StakeTxIT extends QuickTxBaseIT {
BackendService backendService;
UtxoSupplier utxoSupplier;
ProtocolParamsSupplier protocolParamsSupplier;
Account sender1;
Account sender2;
static Account sender1;
static Account sender2;

String sender1Addr;
String sender2Addr;
static String sender1Addr;
static String sender2Addr;

String receiver1 = "addr_test1qz3s0c370u8zzqn302nppuxl840gm6qdmjwqnxmqxme657ze964mar2m3r5jjv4qrsf62yduqns0tsw0hvzwar07qasqeamp0c";
String receiver2 = "addr_test1qqwpl7h3g84mhr36wpetk904p7fchx2vst0z696lxk8ujsjyruqwmlsm344gfux3nsj6njyzj3ppvrqtt36cp9xyydzqzumz82";
static String receiver1 = "addr_test1qz3s0c370u8zzqn302nppuxl840gm6qdmjwqnxmqxme657ze964mar2m3r5jjv4qrsf62yduqns0tsw0hvzwar07qasqeamp0c";
static String receiver2 = "addr_test1qqwpl7h3g84mhr36wpetk904p7fchx2vst0z696lxk8ujsjyruqwmlsm344gfux3nsj6njyzj3ppvrqtt36cp9xyydzqzumz82";

String poolId;
static String poolId;

String aikenCompiledCode1 = "581801000032223253330043370e00290010a4c2c6eb40095cd1"; //redeemer = 1
PlutusScript plutusScript1 = PlutusBlueprintUtil.getPlutusScriptFromCompiledCode(aikenCompiledCode1, PlutusVersion.v2);
static String aikenCompiledCode1 = "581801000032223253330043370e00290010a4c2c6eb40095cd1"; //redeemer = 1
static PlutusScript plutusScript1 = PlutusBlueprintUtil.getPlutusScriptFromCompiledCode(aikenCompiledCode1, PlutusVersion.v2);

String aikenCompileCode2 = "581801000032223253330043370e00290020a4c2c6eb40095cd1"; //redeemer = 2
PlutusScript plutusScript2 = PlutusBlueprintUtil.getPlutusScriptFromCompiledCode(aikenCompileCode2, PlutusVersion.v2);

String scriptStakeAddress1 = AddressProvider.getRewardAddress(plutusScript1, Networks.testnet()).toBech32();
String scriptStakeAddress2 = AddressProvider.getRewardAddress(plutusScript2, Networks.testnet()).toBech32();
static String aikenCompileCode2 = "581801000032223253330043370e00290020a4c2c6eb40095cd1"; //redeemer = 2
static PlutusScript plutusScript2 = PlutusBlueprintUtil.getPlutusScriptFromCompiledCode(aikenCompileCode2, PlutusVersion.v2);

static String scriptStakeAddress1 = AddressProvider.getRewardAddress(plutusScript1, Networks.testnet()).toBech32();
static String scriptStakeAddress2 = AddressProvider.getRewardAddress(plutusScript2, Networks.testnet()).toBech32();

QuickTxBuilder quickTxBuilder;
ObjectMapper objectMapper = new ObjectMapper();

@BeforeEach
void setup() {
backendService = getBackendService();
utxoSupplier = new DefaultUtxoSupplier(backendService.getUtxoService());
protocolParamsSupplier = new DefaultProtocolParamsSupplier(backendService.getEpochService());
quickTxBuilder = new QuickTxBuilder(backendService);

@BeforeAll
static void setupAll() {
//addr_test1qp73ljurtknpm5fgey5r2y9aympd33ksgw0f8rc5khheg83y35rncur9mjvs665cg4052985ry9rzzmqend9sqw0cdksxvefah
String senderMnemonic = "drive useless envelope shine range ability time copper alarm museum near flee wrist live type device meadow allow churn purity wisdom praise drop code";
sender1 = new Account(Networks.testnet(), senderMnemonic);
Expand All @@ -89,6 +83,19 @@ void setup() {
} else {
poolId = "pool1vqq4hdwrh442u97e2jh6k4xuscs3x5mqjjrn8daj36y7gt2rj85";
}

if (backendType.equals(DEVKIT)) {
topUpFund(sender1Addr, 50000);
topUpFund(sender2Addr, 50000);
}
}

@BeforeEach
void setup() {
backendService = getBackendService();
utxoSupplier = new DefaultUtxoSupplier(backendService.getUtxoService());
protocolParamsSupplier = new DefaultProtocolParamsSupplier(backendService.getEpochService());
quickTxBuilder = new QuickTxBuilder(backendService);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,26 @@
import com.bloxbean.cardano.client.backend.api.DefaultProtocolParamsSupplier;
import com.bloxbean.cardano.client.backend.api.DefaultUtxoSupplier;
import com.bloxbean.cardano.client.common.model.Networks;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;

public class TestDataBaseIT extends QuickTxBaseIT {
BackendService backendService;
UtxoSupplier utxoSupplier;
ProtocolParamsSupplier protocolParamsSupplier;
Account sender1;
Account sender2;
String sender1Addr;
String sender2Addr;
static Account sender1;
static Account sender2;
static String sender1Addr;
static String sender2Addr;

String receiver1 = "addr_test1qz3s0c370u8zzqn302nppuxl840gm6qdmjwqnxmqxme657ze964mar2m3r5jjv4qrsf62yduqns0tsw0hvzwar07qasqeamp0c";
String receiver2 = "addr_test1qqwpl7h3g84mhr36wpetk904p7fchx2vst0z696lxk8ujsjyruqwmlsm344gfux3nsj6njyzj3ppvrqtt36cp9xyydzqzumz82";
String receiver3 = "addr_test1qqqvjp4ffcdqg3fmx0k8rwamnn06wp8e575zcv8d0m3tjn2mmexsnkxp7az774522ce4h3qs4tjp9rxjjm46qf339d9sk33rqn";

QuickTxBuilder quickTxBuilder;

@BeforeEach
void setup() {
backendService = getBackendService();
utxoSupplier = new DefaultUtxoSupplier(backendService.getUtxoService());
protocolParamsSupplier = new DefaultProtocolParamsSupplier(backendService.getEpochService());
quickTxBuilder = new QuickTxBuilder(backendService);

@BeforeAll
static void setupAll() {
//addr_test1qp73ljurtknpm5fgey5r2y9aympd33ksgw0f8rc5khheg83y35rncur9mjvs665cg4052985ry9rzzmqend9sqw0cdksxvefah
String senderMnemonic = "drive useless envelope shine range ability time copper alarm museum near flee wrist live type device meadow allow churn purity wisdom praise drop code";
sender1 = new Account(Networks.testnet(), senderMnemonic);
Expand All @@ -40,5 +36,18 @@ void setup() {
String sender2Mnemonic = "access else envelope between rubber celery forum brief bubble notice stomach add initial avocado current net film aunt quick text joke chase robust artefact";
sender2 = new Account(Networks.testnet(), sender2Mnemonic);
sender2Addr = sender2.baseAddress();

if (backendType.equals(DEVKIT)) {
topUpFund(sender1Addr, 50000);
topUpFund(sender2Addr, 50000);
}
}

@BeforeEach
void setup() {
backendService = getBackendService();
utxoSupplier = new DefaultUtxoSupplier(backendService.getUtxoService());
protocolParamsSupplier = new DefaultProtocolParamsSupplier(backendService.getEpochService());
quickTxBuilder = new QuickTxBuilder(backendService);
}
}
Loading
Loading