From f86b0e44d07c87d923b16f92ba7a0544891cc877 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Wed, 9 Aug 2023 12:51:55 +0800 Subject: [PATCH 01/15] get external ip from libp2p --- .../common/parameter/CommonParameter.java | 27 ++++---- .../src/main/java/org/tron/core/Constant.java | 6 +- .../java/org/tron/core/config/args/Args.java | 67 ++++++------------- .../org/tron/core/net/TronNetService.java | 2 +- .../org/tron/common/config/args/ArgsTest.java | 2 +- 5 files changed, 40 insertions(+), 64 deletions(-) diff --git a/common/src/main/java/org/tron/common/parameter/CommonParameter.java b/common/src/main/java/org/tron/common/parameter/CommonParameter.java index 0c8e6f74ee3..e89c512eb5e 100644 --- a/common/src/main/java/org/tron/common/parameter/CommonParameter.java +++ b/common/src/main/java/org/tron/common/parameter/CommonParameter.java @@ -18,6 +18,7 @@ import org.tron.core.config.args.Overlay; import org.tron.core.config.args.SeedNode; import org.tron.core.config.args.Storage; +import org.tron.p2p.P2pConfig; import org.tron.p2p.dns.update.PublishConfig; public class CommonParameter { @@ -169,6 +170,8 @@ public class CommonParameter { @Setter public int minParticipationRate; @Getter + public P2pConfig p2pConfig; + @Getter @Setter public int nodeListenPort; @Getter @@ -177,21 +180,21 @@ public class CommonParameter { @Getter @Setter public String nodeExternalIp; - @Getter - @Setter - public boolean nodeDiscoveryPublicHomeNode; - @Getter - @Setter - public long nodeDiscoveryPingTimeout; - @Getter - @Setter - public long nodeP2pPingInterval; +// @Getter +// @Setter +// public boolean nodeDiscoveryPublicHomeNode; +// @Getter +// @Setter +// public long nodeDiscoveryPingTimeout; +// @Getter +// @Setter +// public long nodeP2pPingInterval; @Getter @Setter public int nodeP2pVersion; - @Getter - @Setter - public String p2pNodeId; +// @Getter +// @Setter +// public String p2pNodeId; @Getter @Setter public boolean nodeEnableIpv6 = false; diff --git a/common/src/main/java/org/tron/core/Constant.java b/common/src/main/java/org/tron/core/Constant.java index dea5a2534b9..31e4344a405 100644 --- a/common/src/main/java/org/tron/core/Constant.java +++ b/common/src/main/java/org/tron/core/Constant.java @@ -101,8 +101,8 @@ public class Constant { public static final String NODE_MAX_CONNECTIONS_WITH_SAME_IP = "node.maxConnectionsWithSameIp"; public static final String NODE_MIN_PARTICIPATION_RATE = "node.minParticipationRate"; public static final String NODE_LISTEN_PORT = "node.listen.port"; - public static final String NODE_DISCOVERY_PUBLIC_HOME_NODE = "node.discovery.public.home.node"; - public static final String NODE_DISCOVERY_PING_TIMEOUT = "node.discovery.ping.timeout"; + //public static final String NODE_DISCOVERY_PUBLIC_HOME_NODE = "node.discovery.public.home.node"; + //public static final String NODE_DISCOVERY_PING_TIMEOUT = "node.discovery.ping.timeout"; public static final String NODE_P2P_PING_INTERVAL = "node.p2p.pingInterval"; public static final String NODE_P2P_VERSION = "node.p2p.version"; @@ -284,7 +284,7 @@ public class Constant { public static final String NODE_DISCOVERY_BIND_IP = "node.discovery.bind.ip"; public static final String NODE_DISCOVERY_EXTERNAL_IP = "node.discovery.external.ip"; - public static final String AMAZONAWS_URL = "http://checkip.amazonaws.com"; + //public static final String AMAZONAWS_URL = "http://checkip.amazonaws.com"; public static final String NODE_BACKUP_PRIORITY = "node.backup.priority"; public static final String NODE_BACKUP_PORT = "node.backup.port"; diff --git a/framework/src/main/java/org/tron/core/config/args/Args.java b/framework/src/main/java/org/tron/core/config/args/Args.java index 50e4dacf6a9..8001e204edc 100644 --- a/framework/src/main/java/org/tron/core/config/args/Args.java +++ b/framework/src/main/java/org/tron/core/config/args/Args.java @@ -15,15 +15,12 @@ import com.typesafe.config.ConfigObject; import io.grpc.internal.GrpcUtil; import io.grpc.netty.NettyServerBuilder; -import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; -import java.net.URL; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; @@ -73,6 +70,7 @@ import org.tron.core.store.AccountStore; import org.tron.keystore.Credentials; import org.tron.keystore.WalletUtils; +import org.tron.p2p.P2pConfig; import org.tron.p2p.dns.update.DnsType; import org.tron.p2p.dns.update.PublishConfig; import org.tron.p2p.utils.NetUtil; @@ -140,9 +138,9 @@ public static void clearParam() { PARAMETER.nodeListenPort = 0; PARAMETER.nodeDiscoveryBindIp = ""; PARAMETER.nodeExternalIp = ""; - PARAMETER.nodeDiscoveryPublicHomeNode = false; - PARAMETER.nodeDiscoveryPingTimeout = 15000; - PARAMETER.nodeP2pPingInterval = 0L; + // PARAMETER.nodeDiscoveryPublicHomeNode = false; + // PARAMETER.nodeDiscoveryPingTimeout = 15000; + // PARAMETER.nodeP2pPingInterval = 0L; PARAMETER.nodeP2pVersion = 0; PARAMETER.nodeEnableIpv6 = false; PARAMETER.dnsTreeUrls = new ArrayList<>(); @@ -170,7 +168,7 @@ public static void clearParam() { PARAMETER.forbidTransferToContract = 0; PARAMETER.tcpNettyWorkThreadNum = 0; PARAMETER.udpNettyWorkThreadNum = 0; - PARAMETER.p2pNodeId = ""; + // PARAMETER.p2pNodeId = ""; PARAMETER.solidityNode = false; PARAMETER.trustNodeAddr = ""; PARAMETER.walletExtensionApi = false; @@ -632,24 +630,25 @@ public static void setParam(final String[] args, final String confFileName) { ? config.getInt(Constant.NODE_MIN_PARTICIPATION_RATE) : 0; + PARAMETER.p2pConfig = new P2pConfig(); PARAMETER.nodeListenPort = config.hasPath(Constant.NODE_LISTEN_PORT) ? config.getInt(Constant.NODE_LISTEN_PORT) : 0; bindIp(config); - externalIp(config); + externalIp(config, PARAMETER.p2pConfig); - PARAMETER.nodeDiscoveryPublicHomeNode = - config.hasPath(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE) && config - .getBoolean(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE); + //PARAMETER.nodeDiscoveryPublicHomeNode = + // config.hasPath(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE) && config + // .getBoolean(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE); - PARAMETER.nodeDiscoveryPingTimeout = - config.hasPath(Constant.NODE_DISCOVERY_PING_TIMEOUT) - ? config.getLong(Constant.NODE_DISCOVERY_PING_TIMEOUT) : 15000; + //PARAMETER.nodeDiscoveryPingTimeout = + // config.hasPath(Constant.NODE_DISCOVERY_PING_TIMEOUT) + // ? config.getLong(Constant.NODE_DISCOVERY_PING_TIMEOUT) : 15000; - PARAMETER.nodeP2pPingInterval = - config.hasPath(Constant.NODE_P2P_PING_INTERVAL) - ? config.getLong(Constant.NODE_P2P_PING_INTERVAL) : 0; + //PARAMETER.nodeP2pPingInterval = + // config.hasPath(Constant.NODE_P2P_PING_INTERVAL) + // ? config.getLong(Constant.NODE_P2P_PING_INTERVAL) : 0; PARAMETER.nodeP2pVersion = config.hasPath(Constant.NODE_P2P_VERSION) @@ -1545,40 +1544,14 @@ private static void bindIp(final com.typesafe.config.Config config) { } } - private static void externalIp(final com.typesafe.config.Config config) { + private static void externalIp(final com.typesafe.config.Config config, P2pConfig p2pConfig) { if (!config.hasPath(Constant.NODE_DISCOVERY_EXTERNAL_IP) || config .getString(Constant.NODE_DISCOVERY_EXTERNAL_IP).trim().isEmpty()) { if (PARAMETER.nodeExternalIp == null) { - logger.info("External IP wasn't set, using checkip.amazonaws.com to identify it..."); - BufferedReader in = null; - try { - in = new BufferedReader(new InputStreamReader( - new URL(Constant.AMAZONAWS_URL).openStream())); - PARAMETER.nodeExternalIp = in.readLine(); - if (PARAMETER.nodeExternalIp == null || PARAMETER.nodeExternalIp.trim().isEmpty()) { - throw new IOException("Invalid address: '" + PARAMETER.nodeExternalIp + "'"); - } - try { - InetAddress.getByName(PARAMETER.nodeExternalIp); - } catch (Exception e) { - throw new IOException("Invalid address: '" + PARAMETER.nodeExternalIp + "'"); - } - logger.info("External address identified: {}", PARAMETER.nodeExternalIp); - } catch (IOException e) { + logger.info("External IP wasn't set, using ipv4 from libp2p"); + PARAMETER.nodeExternalIp = p2pConfig.getIp(); + if (StringUtils.isEmpty(PARAMETER.nodeExternalIp)) { PARAMETER.nodeExternalIp = PARAMETER.nodeDiscoveryBindIp; - logger.warn( - "Can't get external IP. Fall back to peer.bind.ip: " - + PARAMETER.nodeExternalIp + " :" - + e); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - //ignore - } - } - } } } else { diff --git a/framework/src/main/java/org/tron/core/net/TronNetService.java b/framework/src/main/java/org/tron/core/net/TronNetService.java index 87d878be8c9..03becf5d4e9 100644 --- a/framework/src/main/java/org/tron/core/net/TronNetService.java +++ b/framework/src/main/java/org/tron/core/net/TronNetService.java @@ -148,7 +148,7 @@ public static boolean hasIpv4Stack(Set ipSet) { } private P2pConfig getConfig() { - P2pConfig config = new P2pConfig(); + P2pConfig config = parameter.getP2pConfig(); return updateConfig(config); } diff --git a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java index 7ad8069db06..fcd05cba8c6 100644 --- a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java @@ -32,7 +32,7 @@ public void destroy() { public void testConfig() { Assert.assertEquals(Args.getInstance().getMaxTransactionPendingSize(), 2000); Assert.assertEquals(Args.getInstance().getPendingTransactionTimeout(), 60_000); - Assert.assertEquals(Args.getInstance().getNodeDiscoveryPingTimeout(), 15_000); + //Assert.assertEquals(Args.getInstance().getNodeDiscoveryPingTimeout(), 15_000); Assert.assertEquals(Args.getInstance().getMaxFastForwardNum(), 3); Assert.assertEquals(Args.getInstance().getBlockCacheTimeout(), 60); Assert.assertEquals(Args.getInstance().isNodeDetectEnable(), false); From a34cbed31b8a8e5ea61b5db80a336d9fbea0bdae Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Wed, 9 Aug 2023 17:10:21 +0800 Subject: [PATCH 02/15] add test case of ArgsTest --- .../org/tron/common/config/args/ArgsTest.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java index fcd05cba8c6..d08cccf9d13 100644 --- a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java @@ -1,6 +1,9 @@ package org.tron.common.config.args; +import com.beust.jcommander.JCommander; import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -11,14 +14,13 @@ import org.tron.core.config.args.Args; - public class ArgsTest { private static final String dbPath = "output_arg_test"; @Before public void init() { - Args.setParam(new String[]{"--output-directory", dbPath, "--p2p-disable", "true", + Args.setParam(new String[] {"--output-directory", dbPath, "--p2p-disable", "true", "--debug"}, Constant.TEST_CONF); } @@ -45,4 +47,18 @@ public void testConfig() { Assert.assertEquals(rateLimiter.getHttpMap().size(), 1); Assert.assertEquals(rateLimiter.getRpcMap().size(), 0); } + + @Test + public void testHelpMessage() { + JCommander jCommander = JCommander.newBuilder().addObject(Args.PARAMETER).build(); + Method method; + try { + method = Args.class.getDeclaredMethod("printVersion"); + method.setAccessible(true); + method.invoke(Args.class); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + Assert.fail(); + } + Args.printHelp(jCommander); + } } From 0db572777d6b0536164067c3b9a963e7e04ad465 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 10 Aug 2023 12:04:23 +0800 Subject: [PATCH 03/15] feat(test):add testcase of wallet --- .../tron/core/db/TransactionExpireTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java b/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java index f9b1a6c44e0..1589787522a 100644 --- a/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java +++ b/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java @@ -12,6 +12,7 @@ import org.junit.Test; import org.tron.api.GrpcAPI; import org.tron.api.GrpcAPI.Return.response_code; +import org.tron.api.GrpcAPI.TransactionApprovedList; import org.tron.common.application.TronApplicationContext; import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.ByteArray; @@ -30,6 +31,7 @@ import org.tron.core.config.args.Args; import org.tron.core.store.WitnessScheduleStore; import org.tron.protos.Protocol; +import org.tron.protos.Protocol.Transaction; import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.contract.BalanceContract.TransferContract; @@ -105,4 +107,48 @@ public void testExpireTransaction() { GrpcAPI.Return result = wallet.broadcastTransaction(transactionCapsule.getInstance()); Assert.assertEquals(response_code.TRANSACTION_EXPIRATION_ERROR, result.getCode()); } + + @Test + public void testTransactionApprovedList() { + byte[] address = Args.getLocalWitnesses() + .getWitnessAccountAddress(CommonParameter.getInstance().isECKeyCryptoEngine()); + TransferContract transferContract = TransferContract.newBuilder() + .setAmount(1L) + .setOwnerAddress(ByteString.copyFrom(address)) + .setToAddress(ByteString.copyFrom(ByteArray.fromHexString( + (Wallet.getAddressPreFixString() + "A389132D6639FBDA4FBC8B659264E6B7C90DB086")))) + .build(); + TransactionCapsule transactionCapsule = + new TransactionCapsule(transferContract, ContractType.TransferContract); + transactionCapsule.setReference(blockCapsule.getNum(), blockCapsule.getBlockId().getBytes()); + transactionCapsule.sign(ByteArray.fromHexString(Args.getLocalWitnesses().getPrivateKey())); + + TransactionApprovedList transactionApprovedList = wallet.getTransactionApprovedList( + transactionCapsule.getInstance()); + Assert.assertTrue( + transactionApprovedList.getResult().getMessage().contains("Account does not exist!")); + + ByteString addressByte = ByteString.copyFrom(address); + AccountCapsule accountCapsule = + new AccountCapsule(Protocol.Account.newBuilder().setAddress(addressByte).build()); + accountCapsule.setBalance(1000_000_000L); + dbManager.getChainBaseManager().getAccountStore() + .put(accountCapsule.createDbKey(), accountCapsule); + transactionApprovedList = wallet.getTransactionApprovedList(transactionCapsule.getInstance()); + Assert.assertEquals("", transactionApprovedList.getResult().getMessage()); + + byte[] randomSig = org.tron.keystore.Wallet.generateRandomBytes(64); + Transaction transaction = transactionCapsule.getInstance().toBuilder().clearSignature() + .addSignature(ByteString.copyFrom(randomSig)).build(); + transactionApprovedList = wallet.getTransactionApprovedList(transaction); + Assert.assertEquals(TransactionApprovedList.Result.response_code.SIGNATURE_FORMAT_ERROR, + transactionApprovedList.getResult().getCode()); + + randomSig = org.tron.keystore.Wallet.generateRandomBytes(65); + transaction = transactionCapsule.getInstance().toBuilder().clearSignature() + .addSignature(ByteString.copyFrom(randomSig)).build(); + transactionApprovedList = wallet.getTransactionApprovedList(transaction); + Assert.assertEquals(TransactionApprovedList.Result.response_code.COMPUTE_ADDRESS_ERROR, + transactionApprovedList.getResult().getCode()); + } } From 3f17ec2e87c78b038b6a9257cff72121da3f3b71 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 10 Aug 2023 14:14:38 +0800 Subject: [PATCH 04/15] add testcase of Wallet --- .../test/java/org/tron/core/WalletTest.java | 121 +++++++++++++++--- 1 file changed, 102 insertions(+), 19 deletions(-) diff --git a/framework/src/test/java/org/tron/core/WalletTest.java b/framework/src/test/java/org/tron/core/WalletTest.java index 15b51f51edf..a9e578e977d 100644 --- a/framework/src/test/java/org/tron/core/WalletTest.java +++ b/framework/src/test/java/org/tron/core/WalletTest.java @@ -39,9 +39,11 @@ import org.junit.Ignore; import org.junit.Test; import org.tron.api.GrpcAPI; +import org.tron.api.GrpcAPI.AccountNetMessage; import org.tron.api.GrpcAPI.AssetIssueList; import org.tron.api.GrpcAPI.BlockList; import org.tron.api.GrpcAPI.ExchangeList; +import org.tron.api.GrpcAPI.NumberMessage; import org.tron.api.GrpcAPI.ProposalList; import org.tron.common.BaseTest; import org.tron.common.crypto.ECKey; @@ -128,6 +130,7 @@ public class WalletTest extends BaseTest { private static Transaction transaction4; private static Transaction transaction5; private static AssetIssueCapsule Asset1; + private static AssetIssueCapsule Asset2; private static final String OWNER_ADDRESS; private static final String RECEIVER_ADDRESS; @@ -136,7 +139,7 @@ public class WalletTest extends BaseTest { static { dbPath = "output_wallet_test"; - Args.setParam(new String[]{"-d", dbPath}, Constant.TEST_CONF); + Args.setParam(new String[] {"-d", dbPath}, Constant.TEST_CONF); OWNER_ADDRESS = Wallet.getAddressPreFixString() + "548794500882809695a8a687866e76d4271a1abc"; RECEIVER_ADDRESS = Wallet.getAddressPreFixString() + "abd4b9367799eaa3197fecb144eb71de1e049150"; } @@ -234,11 +237,11 @@ private void addTransactionInfoToStore(Transaction transaction) { private static Transaction getBuildTransaction( TransferContract transferContract, long transactionTimestamp, long refBlockNum) { return Transaction.newBuilder().setRawData( - Transaction.raw.newBuilder().setTimestamp(transactionTimestamp) - .setRefBlockNum(refBlockNum) - .addContract( - Contract.newBuilder().setType(ContractType.TransferContract) - .setParameter(Any.pack(transferContract)).build()).build()) + Transaction.raw.newBuilder().setTimestamp(transactionTimestamp) + .setRefBlockNum(refBlockNum) + .addContract( + Contract.newBuilder().setType(ContractType.TransferContract) + .setParameter(Any.pack(transferContract)).build()).build()) .build(); } @@ -287,18 +290,26 @@ private void addBlockToStore(Block block) { private static Block getBuildBlock(long timestamp, long num, long witnessId, String witnessAddress, Transaction transaction, Transaction transactionNext) { return Block.newBuilder().setBlockHeader(BlockHeader.newBuilder().setRawData( - raw.newBuilder().setTimestamp(timestamp).setNumber(num).setWitnessId(witnessId) - .setWitnessAddress(ByteString.copyFrom(ByteArray.fromHexString(witnessAddress))) - .build()).build()).addTransactions(transaction).addTransactions(transactionNext) + raw.newBuilder().setTimestamp(timestamp).setNumber(num).setWitnessId(witnessId) + .setWitnessAddress(ByteString.copyFrom(ByteArray.fromHexString(witnessAddress))) + .build()).build()).addTransactions(transaction).addTransactions(transactionNext) .build(); } private void buildAssetIssue() { AssetIssueContract.Builder builder = AssetIssueContract.newBuilder(); + builder.setOwnerAddress(ByteString.copyFromUtf8("Address1")); builder.setName(ByteString.copyFromUtf8("Asset1")); Asset1 = new AssetIssueCapsule(builder.build()); chainBaseManager.getAssetIssueStore().put(Asset1.createDbKey(), Asset1); + + AssetIssueContract.Builder builder2 = AssetIssueContract.newBuilder(); + builder2.setOwnerAddress(ByteString.copyFromUtf8("Address2")); + builder2.setName(ByteString.copyFromUtf8("Asset2")); + builder2.setId("id2"); + Asset2 = new AssetIssueCapsule(builder2.build()); + chainBaseManager.getAssetIssueV2Store().put(Asset2.getId().getBytes(), Asset2); } private void buildProposal() { @@ -498,6 +509,52 @@ public void getPaginatedAssetIssueList() { } } + @Test + public void testGetAssetIssueByAccount() { + buildAssetIssue(); + // + AssetIssueList assetIssueList = wallet.getAssetIssueByAccount( + ByteString.copyFromUtf8("Address1")); + Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); + } + + @Test + public void testGetAssetIssueList() { + buildAssetIssue(); + // + AssetIssueList assetIssueList = wallet.getAssetIssueList(); + Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); + } + + @Test + public void testGetAssetIssueListByName() { + buildAssetIssue(); + // + AssetIssueList assetIssueList = wallet.getAssetIssueListByName( + ByteString.copyFromUtf8("Asset1")); + Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); + } + + @Test + public void testGetAssetIssueById() { + buildAssetIssue(); + // + AssetIssueContract assetIssueContract = wallet.getAssetIssueById("id2"); + Assert.assertNotNull(assetIssueContract); + } + + @Test + public void testGetAccountNet() { + ByteString addressByte = ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS)); + AccountCapsule accountCapsule = + new AccountCapsule(Protocol.Account.newBuilder().setAddress(addressByte).build()); + accountCapsule.setBalance(1000_000_000L); + dbManager.getChainBaseManager().getAccountStore() + .put(accountCapsule.createDbKey(), accountCapsule); + AccountNetMessage accountNetMessage = wallet.getAccountNet(addressByte); + Assert.assertNotNull(accountNetMessage); + } + @Test public void getPaginatedProposalList() { buildProposal(); @@ -531,6 +588,16 @@ public void getPaginatedProposalList() { } + @Test + public void testGetProposalById() { + buildProposal(); + // + Proposal proposal = wallet.getProposalById(ByteString.copyFrom(ByteArray.fromLong(1L))); + Assert.assertNotNull(proposal); + proposal = wallet.getProposalById(ByteString.copyFrom(ByteArray.fromLong(3L))); + Assert.assertNull(proposal); + } + @Test public void getPaginatedExchangeList() { buildExchange(); @@ -541,6 +608,16 @@ public void getPaginatedExchangeList() { exchangeList.getExchangesList().get(1).getCreatorAddress().toStringUtf8()); } + @Test + public void testGetExchangeById() { + buildExchange(); + // + Exchange exchange = wallet.getExchangeById(ByteString.copyFrom(ByteArray.fromLong(1L))); + Assert.assertNotNull(exchange); + exchange = wallet.getExchangeById(ByteString.copyFrom(ByteArray.fromLong(3L))); + Assert.assertNull(exchange); + } + @Test public void getBlock() { GrpcAPI.BlockReq req = GrpcAPI.BlockReq.getDefaultInstance(); @@ -567,6 +644,12 @@ public void getBlock() { assertEquals(block, wallet.getBlock(req)); } + @Test + public void testGetNextMaintenanceTime() { + NumberMessage numberMessage = wallet.getNextMaintenanceTime(); + Assert.assertEquals(0, numberMessage.getNum()); + } + //@Test public void testChainParameters() { @@ -651,8 +734,8 @@ public void testGetDelegatedResourceAccountIndex() { } private Any getDelegatedContractForCpu(String ownerAddress, String receiverAddress, - long frozenBalance, - long duration) { + long frozenBalance, + long duration) { return Any.pack( BalanceContract.FreezeBalanceContract.newBuilder() .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(ownerAddress))) @@ -688,13 +771,13 @@ private void freezeCpuForOwner() { } private Any getDelegateContractForBandwidth(String ownerAddress, String receiveAddress, - long unfreezeBalance) { + long unfreezeBalance) { return getLockedDelegateContractForBandwidth(ownerAddress, receiveAddress, unfreezeBalance, false); } private Any getLockedDelegateContractForBandwidth(String ownerAddress, String receiveAddress, - long unfreezeBalance, boolean lock) { + long unfreezeBalance, boolean lock) { return Any.pack(BalanceContract.DelegateResourceContract.newBuilder() .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(ownerAddress))) .setReceiverAddress(ByteString.copyFrom(ByteArray.fromHexString(receiveAddress))) @@ -914,7 +997,7 @@ public void testGetAccountById() { chainBaseManager.getAccountIdIndexStore().put(ownerCapsule); Protocol.Account account = wallet.getAccountById( Protocol.Account.newBuilder().setAccountId(ByteString.copyFromUtf8("1001")).build()); - Assert.assertEquals(ownerCapsule.getAddress(),account.getAddress()); + Assert.assertEquals(ownerCapsule.getAddress(), account.getAddress()); } @Test @@ -932,18 +1015,18 @@ public void testGetAssetIssueByName() { String assetName = "My_asset"; String id = "10001"; AssetIssueCapsule assetCapsule = new AssetIssueCapsule(ByteArray.fromHexString(OWNER_ADDRESS), - id,assetName,"abbr", 1_000_000_000_000L,6); + id, assetName, "abbr", 1_000_000_000_000L, 6); chainBaseManager.getAssetIssueStore().put(assetCapsule.createDbKey(), assetCapsule); chainBaseManager.getAssetIssueV2Store().put(assetCapsule.createDbV2Key(), assetCapsule); try { AssetIssueContract assetIssue = wallet.getAssetIssueByName(ByteString.copyFromUtf8(assetName)); - Assert.assertEquals(ByteString.copyFromUtf8(assetName),assetIssue.getName()); - Assert.assertEquals(id,assetIssue.getId()); + Assert.assertEquals(ByteString.copyFromUtf8(assetName), assetIssue.getName()); + Assert.assertEquals(id, assetIssue.getId()); chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); assetIssue = wallet.getAssetIssueByName(ByteString.copyFromUtf8(assetName)); - Assert.assertEquals(ByteString.copyFromUtf8(assetName),assetIssue.getName()); - Assert.assertEquals(id,assetIssue.getId()); + Assert.assertEquals(ByteString.copyFromUtf8(assetName), assetIssue.getName()); + Assert.assertEquals(id, assetIssue.getId()); } catch (NonUniqueObjectException e) { Assert.fail(e.getMessage()); } From d996d79d29019c539802fb9adabc995426d389b6 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Tue, 15 Aug 2023 15:07:14 +0800 Subject: [PATCH 05/15] add some test case of wallet --- .../src/main/java/org/tron/core/Wallet.java | 12 +- .../java/org/tron/core/ShieldWalletTest.java | 192 ++++++++++++++++++ .../test/java/org/tron/core/WalletTest.java | 8 + .../core/zksnark/MerkleContainerTest.java | 4 + .../core/zksnark/ShieldedReceiveTest.java | 10 +- 5 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 framework/src/test/java/org/tron/core/ShieldWalletTest.java diff --git a/framework/src/main/java/org/tron/core/Wallet.java b/framework/src/main/java/org/tron/core/Wallet.java index b866ab54001..2d730b4f14c 100755 --- a/framework/src/main/java/org/tron/core/Wallet.java +++ b/framework/src/main/java/org/tron/core/Wallet.java @@ -2054,8 +2054,16 @@ public IncrementalMerkleTree getMerkleTreeOfBlock(long blockNum) throws ZksnarkE try { if (chainBaseManager.getMerkleTreeIndexStore().has(ByteArray.fromLong(blockNum))) { - return IncrementalMerkleTree - .parseFrom(chainBaseManager.getMerkleTreeIndexStore().get(blockNum)); + byte[] treeRoot = chainBaseManager.getMerkleTreeIndexStore().get(blockNum); + if (treeRoot == null) { + return null; + } + IncrementalMerkleTreeCapsule treeCapsule = chainBaseManager.getMerkleTreeStore() + .get(treeRoot); + if (treeCapsule == null) { + return null; + } + return treeCapsule.getInstance(); } } catch (Exception ex) { logger.error(ex.getMessage()); diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java new file mode 100644 index 00000000000..ee9c7f335c0 --- /dev/null +++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java @@ -0,0 +1,192 @@ +package org.tron.core; + +import static org.tron.core.services.http.FullNodeHttpApiService.librustzcashInitZksnarkParams; + +import javax.annotation.Resource; +import org.junit.Assert; +import org.junit.Test; +import org.tron.api.GrpcAPI.PrivateParameters; +import org.tron.api.GrpcAPI.PrivateParametersWithoutAsk; +import org.tron.api.GrpcAPI.ShieldedAddressInfo; +import org.tron.common.BaseTest; +import org.tron.core.capsule.TransactionCapsule; +import org.tron.core.config.args.Args; +import org.tron.core.exception.BadItemException; +import org.tron.core.exception.ZksnarkException; +import org.tron.core.services.http.JsonFormat; +import org.tron.core.services.http.JsonFormat.ParseException; + + +public class ShieldWalletTest extends BaseTest { + + @Resource + private Wallet wallet; + + static { + dbPath = "shield_wallet_test"; + Args.setParam(new String[] {"-d", dbPath}, Constant.TEST_CONF); + } + + @Test + public void testCreateShieldedTransaction1() { + librustzcashInitZksnarkParams(); + String transactionStr1 = "{\n" + + " \"transparent_from_address\": \"4C90A72AC3DAEF2E689245EF40089D641CEAC7743243AB31316000\",\n" + + " \"from_amount\": 100000000,\n" + + " \"ovk\":\"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" + + " \"shielded_receives\": [\n" + + " {\n" + + " \"note\": {\n" + + " \"value\": 90000000,\n" + + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" + + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" + + " \"memo\": \"22222\"\n" + + " }\n" + + " }\n" + + " ]\n" + + "}"; + + PrivateParameters.Builder builder1 = PrivateParameters.newBuilder(); + try { + JsonFormat.merge(transactionStr1, builder1, false); + } catch (ParseException e) { + Assert.fail(); + } + + try { + TransactionCapsule transactionCapsule = wallet.createShieldedTransaction(builder1.build()); + Assert.assertNotNull(transactionCapsule); + } catch (Exception e) { + Assert.fail(); + } + } + + @Test + public void testCreateShieldedTransaction2() { + librustzcashInitZksnarkParams(); + String transactionStr2 = "{\n" + + " \"ask\": \"98fd03167f2347b54d77238417f6708d57299d987cba8855de07be24b61dde0d\",\n" + + " \"nsk\": \"d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09\",\n" + + " \"ovk\": \"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" + + " \"shielded_spends\": [\n" + + " { \n" + + "\t\t\t\"note\": {\n" + + " \"value\": 90000000,\n" + + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" + + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" + + " \"memo\": \"22222\"\n" + + " },\n" + + " \"alpha\": \"296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c\",\n" + + " \"voucher\": {\n" + + " \"tree\": {\n" + + " \"left\": {\n" + + " \"content\": \"4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e\"\n" + + " },\n" + + " \"right\": {\n" + + " \"content\": \"538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57\"\n" + + " }\n" + + " },\n" + + " \"rt\": \"c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551\"\n" + + " },\n" + + " \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000\"\n" + + " }\n" + + " ],\n" + + " \"shielded_receives\": [\n" + + " {\n" + + " \"note\": {\n" + + " \"value\": 80000000,\n" + + " \"payment_address\": \"ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx\",\n" + + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" + + " \"memo\": \"111111111\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"visible\" : true\n" + + "}"; + + PrivateParameters.Builder builder2 = PrivateParameters.newBuilder(); + try { + JsonFormat.merge(transactionStr2, builder2, true); + } catch (ParseException e) { + Assert.fail(); + } + + try { + TransactionCapsule transactionCapsule = wallet.createShieldedTransaction(builder2.build()); + Assert.assertNotNull(transactionCapsule); + } catch (Exception e) { + Assert.fail(); + } + } + + @Test + public void testCreateShieldedTransactionWithoutSpendAuthSig() { + librustzcashInitZksnarkParams(); + String transactionStr3 = "{\n" + + " \"ak\": \"71ad68c4f50574d5ad37548cbe86601f7296b91a0cb05557314b7808472702de\",\n" + + " \"nsk\": \"d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09\",\n" + + " \"ovk\": \"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" + + " \"shielded_spends\": [\n" + + " {\n" + + " \"note\": {\n" + + " \"value\": 90000000,\n" + + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" + + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" + + " \"memo\": \"22222\"\n" + + " },\n" + + " \"alpha\": \"296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c\",\n" + + " \"voucher\": {\n" + + " \"tree\": {\n" + + " \"left\": {\n" + + " \"content\": \"4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e\"\n" + + " },\n" + + " \"right\": {\n" + + " \"content\": \"538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57\"\n" + + " }\n" + + " },\n" + + " \"rt\": \"c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551\"\n" + + " },\n" + + " \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000\"\n" + + " }\n" + + " ],\n" + + " \"shielded_receives\": [\n" + + " {\n" + + " \"note\": {\n" + + " \"value\": 80000000,\n" + + " \"payment_address\": \"ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx\",\n" + + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" + + " \"memo\": \"111111111\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"visible\": true\n" + + "}"; + + PrivateParametersWithoutAsk.Builder builder3 = PrivateParametersWithoutAsk.newBuilder(); + try { + JsonFormat.merge(transactionStr3, builder3, false); + } catch (ParseException e) { + Assert.fail(); + } + + try { + TransactionCapsule transactionCapsule = wallet.createShieldedTransactionWithoutSpendAuthSig( + builder3.build()); + Assert.assertNotNull(transactionCapsule); + } catch (Exception e) { + Assert.fail(); + } + } + + @Test + public void testGetNewShieldedAddress() { + librustzcashInitZksnarkParams(); + try { + ShieldedAddressInfo shieldedAddressInfo = wallet.getNewShieldedAddress(); + Assert.assertNotNull(shieldedAddressInfo); + } catch (Exception e) { + Assert.fail(); + } + } + +} diff --git a/framework/src/test/java/org/tron/core/WalletTest.java b/framework/src/test/java/org/tron/core/WalletTest.java index a9e578e977d..e034df3c0bd 100644 --- a/framework/src/test/java/org/tron/core/WalletTest.java +++ b/framework/src/test/java/org/tron/core/WalletTest.java @@ -618,6 +618,14 @@ public void testGetExchangeById() { Assert.assertNull(exchange); } + @Test + public void testGetExchangeList() { + buildExchange(); + // + ExchangeList exchangeList = wallet.getExchangeList(); + Assert.assertEquals(2, exchangeList.getExchangesCount()); + } + @Test public void getBlock() { GrpcAPI.BlockReq req = GrpcAPI.BlockReq.getDefaultInstance(); diff --git a/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java b/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java index 678eb137df0..fd7cf943300 100644 --- a/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java +++ b/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java @@ -23,6 +23,7 @@ import org.tron.protos.Protocol.Block; import org.tron.protos.Protocol.Transaction; import org.tron.protos.Protocol.Transaction.Contract.ContractType; +import org.tron.protos.contract.ShieldContract.IncrementalMerkleTree; import org.tron.protos.contract.ShieldContract.IncrementalMerkleVoucherInfo; import org.tron.protos.contract.ShieldContract.OutputPoint; import org.tron.protos.contract.ShieldContract.OutputPointInfo; @@ -332,6 +333,9 @@ public void getMerkleTreeWitnessInfoTest() throws Exception { //init initMerkleTreeWitnessInfo(); + IncrementalMerkleTree incrementalMerkleTree = wallet.getMerkleTreeOfBlock(99); + Assert.assertNotNull(incrementalMerkleTree); + //blockNum:100,txNum:1 ByteString txId1 = ByteString.copyFrom(ByteArray .fromHexString("59051fde6f2e47306f17fca57a4aab3c12d948b7980fd4163c93520b69a7b982")); diff --git a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java index 514a5dfab76..218df6e0d8b 100755 --- a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java +++ b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java @@ -2378,8 +2378,8 @@ public void pushSameSkAndScanAndSpend() throws Exception { chainBaseManager.addWitness(ByteString.copyFrom(witnessAddress)); //sometimes generate block failed, try several times. - - Block block = getSignedBlock(witnessCapsule.getAddress(), 0, privateKey); + long time = System.currentTimeMillis(); + Block block = getSignedBlock(witnessCapsule.getAddress(), time, privateKey); dbManager.pushBlock(new BlockCapsule(block)); //create transactions @@ -2427,12 +2427,15 @@ public void pushSameSkAndScanAndSpend() throws Exception { Thread.sleep(500); //package transaction to block - block = getSignedBlock(witnessCapsule.getAddress(), 0, privateKey); + block = getSignedBlock(witnessCapsule.getAddress(), time + 3000, privateKey); dbManager.pushBlock(new BlockCapsule(block)); BlockCapsule blockCapsule3 = new BlockCapsule(wallet.getNowBlock()); Assert.assertEquals("blocknum != 2", 2, blockCapsule3.getNum()); + block = getSignedBlock(witnessCapsule.getAddress(), time + 6000, privateKey); + dbManager.pushBlock(new BlockCapsule(block)); + // scan note by ivk byte[] receiverIvk = incomingViewingKey.getValue(); DecryptNotes notes1 = wallet.scanNoteByIvk(0, 100, receiverIvk); @@ -2453,6 +2456,7 @@ public void pushSameSkAndScanAndSpend() throws Exception { outPointBuild.setIndex(i); request.addOutPoints(outPointBuild.build()); } + request.setBlockNum(1); IncrementalMerkleVoucherInfo merkleVoucherInfo = wallet .getMerkleTreeVoucherInfo(request.build()); From d1c10748aa987310d1a5b179e31f593203f3ee90 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 17 Aug 2023 14:41:44 +0800 Subject: [PATCH 06/15] add testcase --- .../src/main/java/org/tron/core/Wallet.java | 2 +- .../java/org/tron/core/config/args/Args.java | 6 +- .../java/org/tron/core/ShieldWalletTest.java | 96 +++++++++++++++++++ .../core/zksnark/ShieldedReceiveTest.java | 6 ++ 4 files changed, 106 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/org/tron/core/Wallet.java b/framework/src/main/java/org/tron/core/Wallet.java index 2d730b4f14c..e4897ba7496 100755 --- a/framework/src/main/java/org/tron/core/Wallet.java +++ b/framework/src/main/java/org/tron/core/Wallet.java @@ -4121,7 +4121,7 @@ private void checkBigIntegerRange(BigInteger in) throws ContractValidateExceptio } } - private byte[] getShieldedContractScalingFactor(byte[] contractAddress) + public byte[] getShieldedContractScalingFactor(byte[] contractAddress) throws ContractExeException { String methodSign = "scalingFactor()"; byte[] selector = new byte[4]; diff --git a/framework/src/main/java/org/tron/core/config/args/Args.java b/framework/src/main/java/org/tron/core/config/args/Args.java index 8001e204edc..139374109ae 100644 --- a/framework/src/main/java/org/tron/core/config/args/Args.java +++ b/framework/src/main/java/org/tron/core/config/args/Args.java @@ -636,7 +636,7 @@ public static void setParam(final String[] args, final String confFileName) { ? config.getInt(Constant.NODE_LISTEN_PORT) : 0; bindIp(config); - externalIp(config, PARAMETER.p2pConfig); + externalIp(config); //PARAMETER.nodeDiscoveryPublicHomeNode = // config.hasPath(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE) && config @@ -1544,12 +1544,12 @@ private static void bindIp(final com.typesafe.config.Config config) { } } - private static void externalIp(final com.typesafe.config.Config config, P2pConfig p2pConfig) { + private static void externalIp(final com.typesafe.config.Config config) { if (!config.hasPath(Constant.NODE_DISCOVERY_EXTERNAL_IP) || config .getString(Constant.NODE_DISCOVERY_EXTERNAL_IP).trim().isEmpty()) { if (PARAMETER.nodeExternalIp == null) { logger.info("External IP wasn't set, using ipv4 from libp2p"); - PARAMETER.nodeExternalIp = p2pConfig.getIp(); + PARAMETER.nodeExternalIp = PARAMETER.p2pConfig.getIp(); if (StringUtils.isEmpty(PARAMETER.nodeExternalIp)) { PARAMETER.nodeExternalIp = PARAMETER.nodeDiscoveryBindIp; } diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java index ee9c7f335c0..48e8b3c99b8 100644 --- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java +++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java @@ -1,17 +1,31 @@ package org.tron.core; +import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.mockito.ArgumentMatchers.anyByte; +import static org.mockito.ArgumentMatchers.anyCollection; +import static org.mockito.ArgumentMatchers.anyCollectionOf; +import static org.mockito.ArgumentMatchers.anyString; import static org.tron.core.services.http.FullNodeHttpApiService.librustzcashInitZksnarkParams; +import java.math.BigInteger; import javax.annotation.Resource; import org.junit.Assert; import org.junit.Test; +import org.mockito.Mockito; import org.tron.api.GrpcAPI.PrivateParameters; import org.tron.api.GrpcAPI.PrivateParametersWithoutAsk; +import org.tron.api.GrpcAPI.PrivateShieldedTRC20Parameters; +import org.tron.api.GrpcAPI.PrivateShieldedTRC20ParametersWithoutAsk; import org.tron.api.GrpcAPI.ShieldedAddressInfo; +import org.tron.api.GrpcAPI.ShieldedTRC20Parameters; import org.tron.common.BaseTest; +import org.tron.common.utils.ByteArray; +import org.tron.common.utils.ByteUtil; import org.tron.core.capsule.TransactionCapsule; import org.tron.core.config.args.Args; import org.tron.core.exception.BadItemException; +import org.tron.core.exception.ContractExeException; +import org.tron.core.exception.ContractValidateException; import org.tron.core.exception.ZksnarkException; import org.tron.core.services.http.JsonFormat; import org.tron.core.services.http.JsonFormat.ParseException; @@ -189,4 +203,86 @@ public void testGetNewShieldedAddress() { } } + @Test + public void testCreateShieldedContractParameters() throws ContractExeException { + librustzcashInitZksnarkParams(); + Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); + Wallet wallet1 = Mockito.mock(Wallet.class); + + Mockito.when(wallet1.getShieldedContractScalingFactor( + ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01"))) + .thenReturn(BigInteger.valueOf(1).toByteArray()); + + String parameter = "{\n" + + " \"ask\":\"c2513e9e308494932bd82e0ce53662d17421d90b72a8471a0a12b8552a336e02\",\n" + + " \"nsk\":\"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d\",\n" + + " \"ovk\":\"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43\",\n" + + " \"from_amount\":\"100\",\n" + + " \"shielded_receives\":[\n" + + " {\n" + + " \"note\":{\n" + + " \"value\":100,\n" + + " \"payment_address\":\"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75\",\n" + + " \"rcm\":\"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"shielded_TRC20_contract_address\":\"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01\"\n" + + "}"; + PrivateShieldedTRC20Parameters.Builder builder = PrivateShieldedTRC20Parameters.newBuilder(); + try { + JsonFormat.merge(parameter, builder, false); + } catch (ParseException e) { + Assert.fail(); + } + + try { + ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParameters( + builder.build()); + System.out.println(shieldedTRC20Parameters); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeException { + librustzcashInitZksnarkParams(); + Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); + Wallet wallet1 = Mockito.mock(Wallet.class); + + Mockito.when(wallet1.getShieldedContractScalingFactor( + ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01"))) + .thenReturn(BigInteger.valueOf(1).toByteArray()); + String parameter = "{\n" + + " \"ak\":\"0eba73a48e2949ea5daa13bcef4fdf3a5aa9f3b268067cf81123398a838fe3cc\",\n" + + " \"nsk\":\"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d\",\n" + + " \"ovk\":\"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43\",\n" + + " \"from_amount\":\"100\",\n" + + " \"shielded_receives\":[\n" + + " {\n" + + " \"note\":{\n" + + " \"value\":100,\n" + + " \"payment_address\":\"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75\",\n" + + " \"rcm\":\"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d\"\n" + + " }\n" + + " }\n" + + " ],\n" + + " \"shielded_TRC20_contract_address\":\"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01\"\n" + + "}"; + PrivateShieldedTRC20ParametersWithoutAsk.Builder builder = PrivateShieldedTRC20ParametersWithoutAsk.newBuilder(); + try { + JsonFormat.merge(parameter, builder, false); + } catch (ParseException e) { + Assert.fail(); + } + try { + ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParametersWithoutAsk( + builder.build()); + System.out.println(shieldedTRC20Parameters); + //Assert.assertNotNull(shieldedTRC20Parameters); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java index 218df6e0d8b..d7409ed6807 100755 --- a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java +++ b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java @@ -17,6 +17,7 @@ import org.junit.Test; import org.tron.api.GrpcAPI.BytesMessage; import org.tron.api.GrpcAPI.DecryptNotes; +import org.tron.api.GrpcAPI.DecryptNotesMarked; import org.tron.api.GrpcAPI.ReceiveNote; import org.tron.api.GrpcAPI.SpendAuthSigParameters; import org.tron.api.GrpcAPI.TransactionExtention; @@ -2441,6 +2442,11 @@ public void pushSameSkAndScanAndSpend() throws Exception { DecryptNotes notes1 = wallet.scanNoteByIvk(0, 100, receiverIvk); Assert.assertEquals(2, notes1.getNoteTxsCount()); + // scan note by ivk and mark + DecryptNotesMarked notes3 = wallet.scanAndMarkNoteByIvk(0, 100, receiverIvk, + fullViewingKey.getAk(), fullViewingKey.getNk()); + Assert.assertEquals(2, notes3.getNoteTxsCount()); + // scan note by ovk DecryptNotes notes2 = wallet.scanNoteByOvk(0, 100, senderOvk); Assert.assertEquals(2, notes2.getNoteTxsCount()); From 55527b4aeddcebdc326e4acb7efcaef0180a6f2d Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 17 Aug 2023 18:56:50 +0800 Subject: [PATCH 07/15] optimize test case --- .../java/org/tron/core/ShieldWalletTest.java | 534 +++++++++++++----- 1 file changed, 382 insertions(+), 152 deletions(-) diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java index 48e8b3c99b8..3ff96cb2379 100644 --- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java +++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java @@ -1,17 +1,13 @@ package org.tron.core; -import static org.mockito.Answers.RETURNS_DEEP_STUBS; -import static org.mockito.ArgumentMatchers.anyByte; -import static org.mockito.ArgumentMatchers.anyCollection; -import static org.mockito.ArgumentMatchers.anyCollectionOf; -import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; import static org.tron.core.services.http.FullNodeHttpApiService.librustzcashInitZksnarkParams; import java.math.BigInteger; import javax.annotation.Resource; import org.junit.Assert; import org.junit.Test; -import org.mockito.Mockito; import org.tron.api.GrpcAPI.PrivateParameters; import org.tron.api.GrpcAPI.PrivateParametersWithoutAsk; import org.tron.api.GrpcAPI.PrivateShieldedTRC20Parameters; @@ -20,13 +16,9 @@ import org.tron.api.GrpcAPI.ShieldedTRC20Parameters; import org.tron.common.BaseTest; import org.tron.common.utils.ByteArray; -import org.tron.common.utils.ByteUtil; import org.tron.core.capsule.TransactionCapsule; import org.tron.core.config.args.Args; -import org.tron.core.exception.BadItemException; import org.tron.core.exception.ContractExeException; -import org.tron.core.exception.ContractValidateException; -import org.tron.core.exception.ZksnarkException; import org.tron.core.services.http.JsonFormat; import org.tron.core.services.http.JsonFormat.ParseException; @@ -44,22 +36,38 @@ public class ShieldWalletTest extends BaseTest { @Test public void testCreateShieldedTransaction1() { librustzcashInitZksnarkParams(); - String transactionStr1 = "{\n" - + " \"transparent_from_address\": \"4C90A72AC3DAEF2E689245EF40089D641CEAC7743243AB31316000\",\n" - + " \"from_amount\": 100000000,\n" - + " \"ovk\":\"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" - + " \"shielded_receives\": [\n" - + " {\n" - + " \"note\": {\n" - + " \"value\": 90000000,\n" - + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" - + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" - + " \"memo\": \"22222\"\n" - + " }\n" - + " }\n" - + " ]\n" - + "}"; - + /* + { + "transparent_from_address": "4C90A72AC3DAEF2E689245EF40089D641CEAC7743243AB31316000", + "from_amount": 100000000, + "ovk":"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", + "shielded_receives": [ + { + "note": { + "value": 90000000, + "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", + "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", + "memo": "22222" + } + } + ] + } + */ + String transactionStr1 = new String(ByteArray.fromHexString( + "0x7b0a20202020227472616e73706172656e745f66726f6d5f61646472657373223a202234433930413" + + "73241433344414546324536383932343545463430303839443634314345414337373433323433414233" + + "31333136303030222c0a202020202266726f6d5f616d6f756e74223a203130303030303030302c0a202" + + "02020226f766b223a223566643165636466643637396232616461333337623235306231303234373138" + + "6633316439636237316361653664666363396131613637626134373033643863222c0a2020202022736" + + "869656c6465645f7265636569766573223a205b0a20202020202020207b0a2020202020202020202020" + + "20226e6f7465223a207b0a202020202020202020202020202020202276616c7565223a2039303030303" + + "030302c0a20202020202020202020202020202020227061796d656e745f61646472657373223a20227a" + + "74726f6e3179616d336a723270746d79706c707030747978387974707a36736a64786364657a306a333" + + "36673636d656a76376e6863346171336d766b687275726772777671653932636a6c68356b3367222c0a" + + "202020202020202020202020202020202272636d223a202237323330353362636266656364663564613" + + "63663313861623033373634373665663330386336316237616265383931623263303165393033626362" + + "3837633065222c0a20202020202020202020202020202020226d656d6f223a20223232323232220a202" + + "0202020202020202020207d0a20202020202020207d0a202020205d0a7d")); PrivateParameters.Builder builder1 = PrivateParameters.newBuilder(); try { JsonFormat.merge(transactionStr1, builder1, false); @@ -78,46 +86,137 @@ public void testCreateShieldedTransaction1() { @Test public void testCreateShieldedTransaction2() { librustzcashInitZksnarkParams(); - String transactionStr2 = "{\n" - + " \"ask\": \"98fd03167f2347b54d77238417f6708d57299d987cba8855de07be24b61dde0d\",\n" - + " \"nsk\": \"d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09\",\n" - + " \"ovk\": \"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" - + " \"shielded_spends\": [\n" - + " { \n" - + "\t\t\t\"note\": {\n" - + " \"value\": 90000000,\n" - + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" - + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" - + " \"memo\": \"22222\"\n" - + " },\n" - + " \"alpha\": \"296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c\",\n" - + " \"voucher\": {\n" - + " \"tree\": {\n" - + " \"left\": {\n" - + " \"content\": \"4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e\"\n" - + " },\n" - + " \"right\": {\n" - + " \"content\": \"538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57\"\n" - + " }\n" - + " },\n" - + " \"rt\": \"c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551\"\n" - + " },\n" - + " \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000\"\n" - + " }\n" - + " ],\n" - + " \"shielded_receives\": [\n" - + " {\n" - + " \"note\": {\n" - + " \"value\": 80000000,\n" - + " \"payment_address\": \"ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx\",\n" - + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" - + " \"memo\": \"111111111\"\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"visible\" : true\n" - + "}"; - + /* + { + "ask": "98fd03167f2347b54d77238417f6708d57299d987cba8855de07be24b61dde0d", + "nsk": "d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09", + "ovk": "5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", + "shielded_spends": [ + { + "note": { + "value": 90000000, + "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", + "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", + "memo": "22222" + }, + "alpha": "296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c", + "voucher": { + "tree": { + "left": { + "content": "4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e" + }, + "right": { + "content": "538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57" + } + }, + "rt": "c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551" + }, + "path": "2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000" + } + ], + "shielded_receives": [ + { + "note": { + "value": 80000000, + "payment_address": "ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx", + "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", + "memo": "111111111" + } + } + ], + "visible" : true + } + */ + String transactionStr2 = new String(ByteArray.fromHexString( + "7b0a202020202261736b223a20223938666430333136376632333437623534643737323338343137663" + + "6373038643537323939643938376362613838353564653037626532346236316464653064222c0a2020" + + "2020226e736b223a2022643063623330653764306634653435333535363134333463303462616339316" + + "63039643230653664366234363361623031626534663531386230363839653039222c0a20202020226f" + + "766b223a202235666431656364666436373962326164613333376232353062313032343731386633316" + + "439636237316361653664666363396131613637626134373033643863222c0a2020202022736869656c" + + "6465645f7370656e6473223a205b0a20202020202020207b200a090909226e6f7465223a207b0a20202" + + "0202020202020202020202020202276616c7565223a2039303030303030302c0a202020202020202020" + + "20202020202020227061796d656e745f61646472657373223a20227a74726f6e3179616d336a7232707" + + "46d79706c707030747978387974707a36736a64786364657a306a33336673636d656a76376e68633461" + + "71336d766b687275726772777671653932636a6c68356b3367222c0a202020202020202020202020202" + + "020202272636d223a202237323330353362636266656364663564613636633138616230333736343736" + + "656633303863363162376162653839316232633031653930336263623837633065222c0a20202020202" + + "020202020202020202020226d656d6f223a20223232323232220a2020202020202020202020207d2c0a" + + "20202020202020202020202022616c706861223a2022323936656531633532633933663734306433616" + + "23162373265366463663561626231643666343965643865646236663334656633666462366537366335" + + "353063222c0a20202020202020202020202022766f7563686572223a207b0a202020202020202020202" + + "0202274726565223a207b0a20202020202020202020202020202020226c656674223a207b0a20202020" + + "2020202020202020202020202020202022636f6e74656e74223a2022346565653236313963343862613" + + "26264303235303235363330636430313362616361663337653961323162323965333938393735623763" + + "653864363436613265220a202020202020202020202020202020207d2c0a20202020202020202020202" + + "020202020227269676874223a207b0a202020202020202020202020202020202020202022636f6e7465" + + "6e74223a202235333863326139313537313333356334666138383866396234336239666164643931633" + + "334666366326265666130333931353932613564366535343539623537220a2020202020202020202020" + + "20202020207d0a2020202020202020202020207d2c0a202020202020202020202020227274223a20226" + + "33539376436633235663131623938613638303034343838393138386638613934616237393265353432" + + "32313461386636346632363334616535346535353531220a20202020202020207d2c0a2020202020202" + + "020202020202270617468223a2022323032306232656564303331643464366134663032613039376638" + + "30623534636331353431643431363363366236663539373166383862366534316433356335333831343" + + "23031323933356631346236373635303962383165623439656632356633393236396564373233303932" + + "33386234633134353830333534346236343664636136326432306531663334623033346434613363643" + + "23835353765323930376562663939306339313866363465636235306139346630316436666461356361" + + "35633765663732323032386537623834316463626334376363656236396437636238643934323435666" + + "23763623262613361376136626331386631336639343566376462643665326132306135313232633038" + + "66663963313631643963613666633436323037333339366337643764333865386565343863646233626" + + "56137653232333031333465643661323064326531363432633961343632323239323839653562306533" + + "62376639303038653033303163626239333338356565306532316461323534353037336362353832303" + + "13664363235323936383937316138336461383532316436353338326536316630313736363436643737" + + "31633931353238653332373665653435333833653461323066656530653532383032636230633436623" + + "16562346433373663363236393766343735396636633839313766613335323537313230326664373738" + + "66643731323230346336393337643738663432363835663834623433616433623762303066383132383" + + "53636326638356336613638656631316436326164316133656530383530323030373639353537626336" + + "38326231626633303836343666643062323265363438653862396539386635376532396635616634306" + + "63665646238333365326334393230303865656162306331336162643630363965363331303139376266" + + "38306639633165613664653738666431396362616532346434613532306536636633303233323038643" + + "56661343365356131306431313630356163373433306261316635643831666231623638643239613634" + + "30343035373637373439653834313532373637333230366163613834343864383236336535343764356" + + "66632393530653265643338333965393938643331636263366163396664353762633630303262313539" + + "32313632306364316338646266366533616363376138303433396263343936326366323562396463653" + + "76338393666336135626437303830336663356130653333636630303230366564623136643031393037" + + "62373539393737643736353064616437653365633034396166316133643837353338306236393763383" + + "63263396563356435316332303165613636373566393535316565623964666161613932343762633938" + + "35383237306433643361346335616661373137376139383464356564316265323435313230643661636" + + "46564663935663630386530396661353366623433646364303939303437353732366335313331323130" + + "63396535636165616239376630653634326632306264373462323561616362393233373861383731626" + + "63237643232356366633236626163613334346131656133356664643934353130663364313537303832" + + "63323031623737646163346432346662373235386333633532383730346335393433306236333037313" + + "86265633438363432313833373032316366373564616236353132306563363737313134633237323036" + + "66356465626331633165643636663935653262313838356461356237626533643733366231646539383" + + "53739343733303438323034373737633837373661336231653639623733613632666137303166613466" + + "37613632383264396165653263376136623832653739333764373038316332336332306261343962363" + + "53966626430623733333432313165613661396439646631383563373537653730616138316461353632" + + "66623931326238346634396263653732323034336666353435376631336239323662363164663535326" + + "43465343032656536646331343633663939613533356639613731333433393236346435623631366232" + + "30376239396162646333373330393931636339323734373237643764383264323863623739346564626" + + "33730333462346630303533666637633462363830343434323064366336333961633234623436626431" + + "39333431633931623133666463616233313538316464616637663134313133333661323731663364306" + + "16135323831333230386163396366396333393165336664343238393164323732333861383161386135" + + "63316433613732623162636265613863663434613538636537333839363133323039313264383262326" + + "33262636132333166373165666366363137333766626630613038626566613034313632313561656566" + + "35336538626236643233333930613230653131306465363563393037623964656134616530626438336" + + "13462306135316265613137353634366136346331326234633966393331623263623331623439323064" + + "38323833333836656632656630376562646262343338336331326137333961393533613464366530643" + + "66662313133396134303336643639336266626236633230666665396663303366313862313736633939" + + "38383036343339666630626238616431393361666462323762326363626338383835363931366464383" + + "03465333432303831376465333661623264353766656230373736333462636137373831396338653062" + + "64323938633034663666656430653661383363633133353663613135353230346565653236313963343" + + "86261326264303235303235363330636430313362616361663337653961323162323965333938393735" + + "62376365386436343661326530313030303030303030303030303030220a20202020202020207d0a202" + + "020205d2c0a2020202022736869656c6465645f7265636569766573223a205b0a20202020202020207b" + + "0a202020202020202020202020226e6f7465223a207b0a2020202020202020202020202020202022766" + + "16c7565223a2038303030303030302c0a20202020202020202020202020202020227061796d656e745f" + + "61646472657373223a20227a74726f6e31356b657a70736d71303568336d616a6e6c7a6834306772796" + + "a6d676d3630783265686a7967633771387336376d6c753835376375747177613334386e76706765706e" + + "35786b336735727278222c0a202020202020202020202020202020202272636d223a202237323330353" + + "36263626665636466356461363663313861623033373634373665663330386336316237616265383931" + + "6232633031653930336263623837633065222c0a20202020202020202020202020202020226d656d6f2" + + "23a2022313131313131313131220a2020202020202020202020207d0a20202020202020207d0a202020" + + "205d2c0a202020202276697369626c6522203a20747275650a7d")); PrivateParameters.Builder builder2 = PrivateParameters.newBuilder(); try { JsonFormat.merge(transactionStr2, builder2, true); @@ -136,46 +235,138 @@ public void testCreateShieldedTransaction2() { @Test public void testCreateShieldedTransactionWithoutSpendAuthSig() { librustzcashInitZksnarkParams(); - String transactionStr3 = "{\n" - + " \"ak\": \"71ad68c4f50574d5ad37548cbe86601f7296b91a0cb05557314b7808472702de\",\n" - + " \"nsk\": \"d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09\",\n" - + " \"ovk\": \"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c\",\n" - + " \"shielded_spends\": [\n" - + " {\n" - + " \"note\": {\n" - + " \"value\": 90000000,\n" - + " \"payment_address\": \"ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g\",\n" - + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" - + " \"memo\": \"22222\"\n" - + " },\n" - + " \"alpha\": \"296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c\",\n" - + " \"voucher\": {\n" - + " \"tree\": {\n" - + " \"left\": {\n" - + " \"content\": \"4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e\"\n" - + " },\n" - + " \"right\": {\n" - + " \"content\": \"538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57\"\n" - + " }\n" - + " },\n" - + " \"rt\": \"c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551\"\n" - + " },\n" - + " \"path\": \"2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000\"\n" - + " }\n" - + " ],\n" - + " \"shielded_receives\": [\n" - + " {\n" - + " \"note\": {\n" - + " \"value\": 80000000,\n" - + " \"payment_address\": \"ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx\",\n" - + " \"rcm\": \"723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e\",\n" - + " \"memo\": \"111111111\"\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"visible\": true\n" - + "}"; - + /* + { + "ak": "71ad68c4f50574d5ad37548cbe86601f7296b91a0cb05557314b7808472702de", + "nsk": "d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09", + "ovk": "5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", + "shielded_spends": [ + { + "note": { + "value": 90000000, + "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", + "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", + "memo": "22222" + }, + "alpha": "296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c", + "voucher": { + "tree": { + "left": { + "content": "4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e" + }, + "right": { + "content": "538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57" + } + }, + "rt": "c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551" + }, + "path": "2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000" + } + ], + "shielded_receives": [ + { + "note": { + "value": 80000000, + "payment_address": "ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx", + "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", + "memo": "111111111" + } + } + ], + "visible": true + } + */ + String transactionStr3 = new String(ByteArray.fromHexString( + "7b0a2020202022616b223a2022373161643638633466353035373464356164333735343863626538363" + + "63031663732393662393161306362303535353733313462373830383437323730326465222c0a202020" + + "20226e736b223a202264306362333065376430663465343533353536313433346330346261633931663" + + "039643230653664366234363361623031626534663531386230363839653039222c0a20202020226f76" + + "6b223a20223566643165636466643637396232616461333337623235306231303234373138663331643" + + "9636237316361653664666363396131613637626134373033643863222c0a2020202022736869656c64" + + "65645f7370656e6473223a205b0a20202020202020207b0a202020202020202020202020226e6f74652" + + "23a207b0a202020202020202020202020202020202276616c7565223a2039303030303030302c0a2020" + + "2020202020202020202020202020227061796d656e745f61646472657373223a20227a74726f6e31796" + + "16d336a723270746d79706c707030747978387974707a36736a64786364657a306a33336673636d656a" + + "76376e6863346171336d766b687275726772777671653932636a6c68356b3367222c0a2020202020202" + + "02020202020202020202272636d223a2022373233303533626362666563646635646136366331386162" + + "30333736343736656633303863363162376162653839316232633031653930336263623837633065222" + + "c0a20202020202020202020202020202020226d656d6f223a20223232323232220a2020202020202020" + + "202020207d2c0a20202020202020202020202022616c706861223a20223239366565316335326339336" + + "63734306433616231623732653664636635616262316436663439656438656462366633346566336664" + + "62366537366335353063222c0a20202020202020202020202022766f7563686572223a207b0a2020202" + + "02020202020202020202020202274726565223a207b0a20202020202020202020202020202020202020" + + "20226c656674223a207b0a20202020202020202020202020202020202020202020202022636f6e74656" + + "e74223a2022346565653236313963343862613262643032353032353633306364303133626163616633" + + "37653961323162323965333938393735623763653864363436613265220a20202020202020202020202" + + "020202020202020207d2c0a2020202020202020202020202020202020202020227269676874223a207b" + + "0a20202020202020202020202020202020202020202020202022636f6e74656e74223a2022353338633" + + "26139313537313333356334666138383866396234336239666164643931633334666366326265666130" + + "333931353932613564366535343539623537220a20202020202020202020202020202020202020207d0" + + "a202020202020202020202020202020207d2c0a20202020202020202020202020202020227274223a20" + + "22633539376436633235663131623938613638303034343838393138386638613934616237393265353" + + "43232313461386636346632363334616535346535353531220a2020202020202020202020207d2c0a20" + + "20202020202020202020202270617468223a20223230323062326565643033316434643661346630326" + + "13039376638306235346363313534316434313633633662366635393731663838623665343164333563" + + "35333831343230313239333566313462363736353039623831656234396566323566333932363965643" + + "73233303932333862346331343538303335343462363436646361363264323065316633346230333464" + + "34613363643238353537653239303765626639393063393138663634656362353061393466303164366" + + "66461356361356337656637323230323865376238343164636263343763636562363964376362386439" + + "34323435666237636232626133613761366263313866313366393435663764626436653261323061353" + + "13232633038666639633136316439636136666334363230373333393663376437643338653865653438" + + "63646233626561376532323330313334656436613230643265313634326339613436323232393238396" + + "53562306533623766393030386530333031636262393333383565653065323164613235343530373363" + + "62353832303136643632353239363839373161383364613835323164363533383265363166303137363" + + "63436643737316339313532386533323736656534353338336534613230666565306535323830326362" + + "30633436623165623464333736633632363937663437353966366338393137666133353235373132303" + + "26664373738666437313232303463363933376437386634323638356638346234336164336237623030" + + "66383132383536363266383563366136386566313164363261643161336565303835303230303736393" + + "53537626336383262316266333038363436666430623232653634386538623965393866353765323966" + + "35616634306636656462383333653263343932303038656561623063313361626436303639653633313" + + "03139376266383066396331656136646537386664313963626165323464346135323065366366333032" + + "33323038643566613433653561313064313136303561633734333062613166356438316662316236386" + + "43239613634303430353736373734396538343135323736373332303661636138343438643832363365" + + "35343764356666323935306532656433383339653939386433316362633661633966643537626336303" + + "03262313539323136323063643163386462663665336163633761383034333962633439363263663235" + + "62396463653763383936663361356264373038303366633561306533336366303032303665646231366" + + "43031393037623735393937376437363530646164376533656330343961663161336438373533383062" + + "36393763383632633965633564353163323031656136363735663935353165656239646661616139323" + + "43762633938353832373064336433613463356166613731373761393834643565643162653234353132" + + "30643661636465646639356636303865303966613533666234336463643039393034373537323663353" + + "13331323130633965356361656162393766306536343266323062643734623235616163623932333738" + + "61383731626632376432323563666332366261636133343461316561333566646439343531306633643" + + "13537303832633230316237376461633464323466623732353863336335323837303463353934333062" + + "36333037313862656334383634323138333730323163663735646162363531323065633637373131346" + + "33237323036663564656263316331656436366639356532623138383564613562376265336437333662" + + "31646539383537393437333034383230343737376338373736613362316536396237336136326661373" + + "03166613466376136323832643961656532633761366238326537393337643730383163323363323062" + + "61343962363539666264306237333334323131656136613964396466313835633735376537306161383" + + "16461353632666239313262383466343962636537323230343366663534353766313362393236623631" + + "64663535326434653430326565366463313436336639396135333566396137313334333932363464356" + + "23631366232303762393961626463333733303939316363393237343732376437643832643238636237" + + "39346564626337303334623466303035336666376334623638303434343230643663363339616332346" + + "23436626431393334316339316231336664636162333135383164646166376631343131333336613237" + + "31663364306161353238313332303861633963663963333931653366643432383931643237323338613" + + "83161386135633164336137326231626362656138636634346135386365373338393631333230393132" + + "64383262326332626361323331663731656663663631373337666266306130386265666130343136323" + + "13561656566353365386262366432333339306132306531313064653635633930376239646561346165" + + "30626438336134623061353162656131373536343661363463313262346339663933316232636233316" + + "23439323064383238333338366566326566303765626462623433383363313261373339613935336134" + + "64366530643666623131333961343033366436393362666262366332306666653966633033663138623" + + "13736633939383830363433396666306262386164313933616664623237623263636263383838353639" + + "31366464383034653334323038313764653336616232643537666562303737363334626361373738313" + + "96338653062643239386330346636666564306536613833636331333536636131353532303465656532" + + "36313963343862613262643032353032353633306364303133626163616633376539613231623239653" + + "3393839373562376365386436343661326530313030303030303030303030303030220a202020202020" + + "20207d0a202020205d2c0a2020202022736869656c6465645f7265636569766573223a205b0a2020202" + + "0202020207b0a202020202020202020202020226e6f7465223a207b0a20202020202020202020202020" + + "2020202276616c7565223a2038303030303030302c0a202020202020202020202020202020202270617" + + "96d656e745f61646472657373223a20227a74726f6e31356b657a70736d71303568336d616a6e6c7a68" + + "34306772796a6d676d3630783265686a7967633771387336376d6c753835376375747177613334386e7" + + "6706765706e35786b336735727278222c0a202020202020202020202020202020202272636d223a2022" + + "37323330353362636266656364663564613636633138616230333736343736656633303863363162376" + + "162653839316232633031653930336263623837633065222c0a20202020202020202020202020202020" + + "226d656d6f223a2022313131313131313131220a2020202020202020202020207d0a202020202020202" + + "07d0a202020205d2c0a202020202276697369626c65223a20747275650a7d")); PrivateParametersWithoutAsk.Builder builder3 = PrivateParametersWithoutAsk.newBuilder(); try { JsonFormat.merge(transactionStr3, builder3, false); @@ -207,28 +398,47 @@ public void testGetNewShieldedAddress() { public void testCreateShieldedContractParameters() throws ContractExeException { librustzcashInitZksnarkParams(); Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); - Wallet wallet1 = Mockito.mock(Wallet.class); + Wallet wallet1 = spy(new Wallet()); - Mockito.when(wallet1.getShieldedContractScalingFactor( - ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01"))) - .thenReturn(BigInteger.valueOf(1).toByteArray()); - - String parameter = "{\n" - + " \"ask\":\"c2513e9e308494932bd82e0ce53662d17421d90b72a8471a0a12b8552a336e02\",\n" - + " \"nsk\":\"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d\",\n" - + " \"ovk\":\"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43\",\n" - + " \"from_amount\":\"100\",\n" - + " \"shielded_receives\":[\n" - + " {\n" - + " \"note\":{\n" - + " \"value\":100,\n" - + " \"payment_address\":\"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75\",\n" - + " \"rcm\":\"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d\"\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"shielded_TRC20_contract_address\":\"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01\"\n" - + "}"; + doReturn(BigInteger.valueOf(1).toByteArray()) + .when(wallet1).getShieldedContractScalingFactor( + ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); + /* + { + "ask":"c2513e9e308494932bd82e0ce53662d17421d90b72a8471a0a12b8552a336e02", + "nsk":"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d", + "ovk":"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43", + "from_amount":"100", + "shielded_receives":[ + { + "note":{ + "value":100, + "payment_address":"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75", + "rcm":"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d" + } + } + ], + "shielded_TRC20_contract_address":"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01" + } + * */ + String parameter = new String(ByteArray.fromHexString( + "7b0a202020202261736b223a22633235313365396533303834393439333262643832653063653533363" + + "63264313734323164393062373261383437316130613132623835353261333336653032222c0a202020" + + "20226e736b223a223463366266336464346130363433643230623632386637653435393830633565313" + + "8376630376135316436663365383661616631616239313663303765623064222c0a20202020226f766b" + + "223a2231376135386439613530353864613665343263613132636432383964306136616131363962393" + + "236633138653139626361353138623864366638363734653433222c0a202020202266726f6d5f616d6f" + + "756e74223a22313030222c0a2020202022736869656c6465645f7265636569766573223a5b0a2020202" + + "0202020207b0a202020202020202020202020226e6f7465223a7b0a2020202020202020202020202020" + + "20202276616c7565223a3130302c0a20202020202020202020202020202020227061796d656e745f616" + + "46472657373223a227a74726f6e317939397536656a71656e757076666b70356736713679716b703061" + + "34346334386374613064643567656a7471613476323768716132636768667664786e6d6e65683671717" + + "1303366613735222c0a202020202020202020202020202020202272636d223a22313662366635653430" + + "34343461623765656162313161653636313363323766333531313739373165666138376237313536306" + + "235383133383239633933393064220a2020202020202020202020207d0a20202020202020207d0a2020" + + "20205d2c0a2020202022736869656c6465645f54524332305f636f6e74726163745f616464726573732" + + "23a22343134343030373937393335394543414333393542424433434546383036304433444632444333" + + "463031220a7d")); PrivateShieldedTRC20Parameters.Builder builder = PrivateShieldedTRC20Parameters.newBuilder(); try { JsonFormat.merge(parameter, builder, false); @@ -239,9 +449,9 @@ public void testCreateShieldedContractParameters() throws ContractExeException { try { ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParameters( builder.build()); - System.out.println(shieldedTRC20Parameters); + Assert.assertNotNull(shieldedTRC20Parameters); } catch (Exception e) { - e.printStackTrace(); + Assert.fail(); } } @@ -249,40 +459,60 @@ public void testCreateShieldedContractParameters() throws ContractExeException { public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeException { librustzcashInitZksnarkParams(); Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); - Wallet wallet1 = Mockito.mock(Wallet.class); - Mockito.when(wallet1.getShieldedContractScalingFactor( - ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01"))) - .thenReturn(BigInteger.valueOf(1).toByteArray()); - String parameter = "{\n" - + " \"ak\":\"0eba73a48e2949ea5daa13bcef4fdf3a5aa9f3b268067cf81123398a838fe3cc\",\n" - + " \"nsk\":\"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d\",\n" - + " \"ovk\":\"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43\",\n" - + " \"from_amount\":\"100\",\n" - + " \"shielded_receives\":[\n" - + " {\n" - + " \"note\":{\n" - + " \"value\":100,\n" - + " \"payment_address\":\"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75\",\n" - + " \"rcm\":\"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d\"\n" - + " }\n" - + " }\n" - + " ],\n" - + " \"shielded_TRC20_contract_address\":\"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01\"\n" - + "}"; + Wallet wallet1 = spy(new Wallet()); + doReturn(BigInteger.valueOf(1).toByteArray()) + .when(wallet1).getShieldedContractScalingFactor( + ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); + /* + { + "ak":"0eba73a48e2949ea5daa13bcef4fdf3a5aa9f3b268067cf81123398a838fe3cc", + "nsk":"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d", + "ovk":"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43", + "from_amount":"100", + "shielded_receives":[ + { + "note":{ + "value":100, + "payment_address":"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75", + "rcm":"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d" + } + } + ], + "shielded_TRC20_contract_address":"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01" + } + */ + String parameter = new String(ByteArray.fromHexString( + "7b0a2020202022616b223a2230656261373361343865323934396561356461613133626365663466646" + + "633613561613966336232363830363763663831313233333938613833386665336363222c0a20202020" + + "226e736b223a22346336626633646434613036343364323062363238663765343539383063356531383" + + "76630376135316436663365383661616631616239313663303765623064222c0a20202020226f766b22" + + "3a223137613538643961353035386461366534326361313263643238396430613661613136396239323" + + "6633138653139626361353138623864366638363734653433222c0a202020202266726f6d5f616d6f75" + + "6e74223a22313030222c0a2020202022736869656c6465645f7265636569766573223a5b0a202020202" + + "02020207b0a202020202020202020202020226e6f7465223a7b0a202020202020202020202020202020" + + "202276616c7565223a3130302c0a20202020202020202020202020202020227061796d656e745f61646" + + "472657373223a227a74726f6e317939397536656a71656e757076666b70356736713679716b70306134" + + "346334386374613064643567656a7471613476323768716132636768667664786e6d6e6568367171713" + + "03366613735222c0a202020202020202020202020202020202272636d223a2231366236663565343034" + + "34346162376565616231316165363631336332376633353131373937316566613837623731353630623" + + "5383133383239633933393064220a2020202020202020202020207d0a20202020202020207d0a202020" + + "205d2c0a2020202022736869656c6465645f54524332305f636f6e74726163745f61646472657373223" + + "a2234313434303037393739333539454341433339354242443343454638303630443344463244433346" + + "3031220a7d")); PrivateShieldedTRC20ParametersWithoutAsk.Builder builder = PrivateShieldedTRC20ParametersWithoutAsk.newBuilder(); try { JsonFormat.merge(parameter, builder, false); } catch (ParseException e) { Assert.fail(); } + try { ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParametersWithoutAsk( builder.build()); - System.out.println(shieldedTRC20Parameters); - //Assert.assertNotNull(shieldedTRC20Parameters); + Assert.assertNotNull(shieldedTRC20Parameters); } catch (Exception e) { - e.printStackTrace(); + Assert.fail(); } } } From 74c8baa0f5701e40687f0fad994ba95629e36d6e Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 17 Aug 2023 20:01:26 +0800 Subject: [PATCH 08/15] remove long text --- .../java/org/tron/core/ShieldWalletTest.java | 135 ------------------ 1 file changed, 135 deletions(-) diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java index 3ff96cb2379..6151f4b686e 100644 --- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java +++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java @@ -36,23 +36,6 @@ public class ShieldWalletTest extends BaseTest { @Test public void testCreateShieldedTransaction1() { librustzcashInitZksnarkParams(); - /* - { - "transparent_from_address": "4C90A72AC3DAEF2E689245EF40089D641CEAC7743243AB31316000", - "from_amount": 100000000, - "ovk":"5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", - "shielded_receives": [ - { - "note": { - "value": 90000000, - "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", - "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", - "memo": "22222" - } - } - ] - } - */ String transactionStr1 = new String(ByteArray.fromHexString( "0x7b0a20202020227472616e73706172656e745f66726f6d5f61646472657373223a202234433930413" + "73241433344414546324536383932343545463430303839443634314345414337373433323433414233" @@ -86,47 +69,6 @@ public void testCreateShieldedTransaction1() { @Test public void testCreateShieldedTransaction2() { librustzcashInitZksnarkParams(); - /* - { - "ask": "98fd03167f2347b54d77238417f6708d57299d987cba8855de07be24b61dde0d", - "nsk": "d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09", - "ovk": "5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", - "shielded_spends": [ - { - "note": { - "value": 90000000, - "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", - "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", - "memo": "22222" - }, - "alpha": "296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c", - "voucher": { - "tree": { - "left": { - "content": "4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e" - }, - "right": { - "content": "538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57" - } - }, - "rt": "c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551" - }, - "path": "2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000" - } - ], - "shielded_receives": [ - { - "note": { - "value": 80000000, - "payment_address": "ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx", - "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", - "memo": "111111111" - } - } - ], - "visible" : true - } - */ String transactionStr2 = new String(ByteArray.fromHexString( "7b0a202020202261736b223a20223938666430333136376632333437623534643737323338343137663" + "6373038643537323939643938376362613838353564653037626532346236316464653064222c0a2020" @@ -235,47 +177,6 @@ public void testCreateShieldedTransaction2() { @Test public void testCreateShieldedTransactionWithoutSpendAuthSig() { librustzcashInitZksnarkParams(); - /* - { - "ak": "71ad68c4f50574d5ad37548cbe86601f7296b91a0cb05557314b7808472702de", - "nsk": "d0cb30e7d0f4e4535561434c04bac91f09d20e6d6b463ab01be4f518b0689e09", - "ovk": "5fd1ecdfd679b2ada337b250b1024718f31d9cb71cae6dfcc9a1a67ba4703d8c", - "shielded_spends": [ - { - "note": { - "value": 90000000, - "payment_address": "ztron1yam3jr2ptmyplpp0tyx8ytpz6sjdxcdez0j33fscmejv7nhc4aq3mvkhrurgrwvqe92cjlh5k3g", - "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", - "memo": "22222" - }, - "alpha": "296ee1c52c93f740d3ab1b72e6dcf5abb1d6f49ed8edb6f34ef3fdb6e76c550c", - "voucher": { - "tree": { - "left": { - "content": "4eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e" - }, - "right": { - "content": "538c2a91571335c4fa888f9b43b9fadd91c34fcf2befa0391592a5d6e5459b57" - } - }, - "rt": "c597d6c25f11b98a680044889188f8a94ab792e542214a8f64f2634ae54e5551" - }, - "path": "2020b2eed031d4d6a4f02a097f80b54cc1541d4163c6b6f5971f88b6e41d35c538142012935f14b676509b81eb49ef25f39269ed72309238b4c145803544b646dca62d20e1f34b034d4a3cd28557e2907ebf990c918f64ecb50a94f01d6fda5ca5c7ef722028e7b841dcbc47cceb69d7cb8d94245fb7cb2ba3a7a6bc18f13f945f7dbd6e2a20a5122c08ff9c161d9ca6fc462073396c7d7d38e8ee48cdb3bea7e2230134ed6a20d2e1642c9a462229289e5b0e3b7f9008e0301cbb93385ee0e21da2545073cb582016d6252968971a83da8521d65382e61f0176646d771c91528e3276ee45383e4a20fee0e52802cb0c46b1eb4d376c62697f4759f6c8917fa352571202fd778fd712204c6937d78f42685f84b43ad3b7b00f81285662f85c6a68ef11d62ad1a3ee0850200769557bc682b1bf308646fd0b22e648e8b9e98f57e29f5af40f6edb833e2c492008eeab0c13abd6069e6310197bf80f9c1ea6de78fd19cbae24d4a520e6cf3023208d5fa43e5a10d11605ac7430ba1f5d81fb1b68d29a640405767749e841527673206aca8448d8263e547d5ff2950e2ed3839e998d31cbc6ac9fd57bc6002b15921620cd1c8dbf6e3acc7a80439bc4962cf25b9dce7c896f3a5bd70803fc5a0e33cf00206edb16d01907b759977d7650dad7e3ec049af1a3d875380b697c862c9ec5d51c201ea6675f9551eeb9dfaaa9247bc9858270d3d3a4c5afa7177a984d5ed1be245120d6acdedf95f608e09fa53fb43dcd0990475726c5131210c9e5caeab97f0e642f20bd74b25aacb92378a871bf27d225cfc26baca344a1ea35fdd94510f3d157082c201b77dac4d24fb7258c3c528704c59430b630718bec486421837021cf75dab65120ec677114c27206f5debc1c1ed66f95e2b1885da5b7be3d736b1de98579473048204777c8776a3b1e69b73a62fa701fa4f7a6282d9aee2c7a6b82e7937d7081c23c20ba49b659fbd0b7334211ea6a9d9df185c757e70aa81da562fb912b84f49bce722043ff5457f13b926b61df552d4e402ee6dc1463f99a535f9a713439264d5b616b207b99abdc3730991cc9274727d7d82d28cb794edbc7034b4f0053ff7c4b68044420d6c639ac24b46bd19341c91b13fdcab31581ddaf7f1411336a271f3d0aa52813208ac9cf9c391e3fd42891d27238a81a8a5c1d3a72b1bcbea8cf44a58ce738961320912d82b2c2bca231f71efcf61737fbf0a08befa0416215aeef53e8bb6d23390a20e110de65c907b9dea4ae0bd83a4b0a51bea175646a64c12b4c9f931b2cb31b4920d8283386ef2ef07ebdbb4383c12a739a953a4d6e0d6fb1139a4036d693bfbb6c20ffe9fc03f18b176c998806439ff0bb8ad193afdb27b2ccbc88856916dd804e3420817de36ab2d57feb077634bca77819c8e0bd298c04f6fed0e6a83cc1356ca155204eee2619c48ba2bd025025630cd013bacaf37e9a21b29e398975b7ce8d646a2e0100000000000000" - } - ], - "shielded_receives": [ - { - "note": { - "value": 80000000, - "payment_address": "ztron15kezpsmq05h3majnlzh40gryjmgm60x2ehjygc7q8s67mlu857cutqwa348nvpgepn5xk3g5rrx", - "rcm": "723053bcbfecdf5da66c18ab0376476ef308c61b7abe891b2c01e903bcb87c0e", - "memo": "111111111" - } - } - ], - "visible": true - } - */ String transactionStr3 = new String(ByteArray.fromHexString( "7b0a2020202022616b223a2022373161643638633466353035373464356164333735343863626538363" + "63031663732393662393161306362303535353733313462373830383437323730326465222c0a202020" @@ -403,24 +304,6 @@ public void testCreateShieldedContractParameters() throws ContractExeException { doReturn(BigInteger.valueOf(1).toByteArray()) .when(wallet1).getShieldedContractScalingFactor( ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); - /* - { - "ask":"c2513e9e308494932bd82e0ce53662d17421d90b72a8471a0a12b8552a336e02", - "nsk":"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d", - "ovk":"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43", - "from_amount":"100", - "shielded_receives":[ - { - "note":{ - "value":100, - "payment_address":"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75", - "rcm":"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d" - } - } - ], - "shielded_TRC20_contract_address":"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01" - } - * */ String parameter = new String(ByteArray.fromHexString( "7b0a202020202261736b223a22633235313365396533303834393439333262643832653063653533363" + "63264313734323164393062373261383437316130613132623835353261333336653032222c0a202020" @@ -464,24 +347,6 @@ public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeE doReturn(BigInteger.valueOf(1).toByteArray()) .when(wallet1).getShieldedContractScalingFactor( ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); - /* - { - "ak":"0eba73a48e2949ea5daa13bcef4fdf3a5aa9f3b268067cf81123398a838fe3cc", - "nsk":"4c6bf3dd4a0643d20b628f7e45980c5e187f07a51d6f3e86aaf1ab916c07eb0d", - "ovk":"17a58d9a5058da6e42ca12cd289d0a6aa169b926c18e19bca518b8d6f8674e43", - "from_amount":"100", - "shielded_receives":[ - { - "note":{ - "value":100, - "payment_address":"ztron1y99u6ejqenupvfkp5g6q6yqkp0a44c48cta0dd5gejtqa4v27hqa2cghfvdxnmneh6qqq03fa75", - "rcm":"16b6f5e40444ab7eeab11ae6613c27f35117971efa87b71560b5813829c9390d" - } - } - ], - "shielded_TRC20_contract_address":"4144007979359ECAC395BBD3CEF8060D3DF2DC3F01" - } - */ String parameter = new String(ByteArray.fromHexString( "7b0a2020202022616b223a2230656261373361343865323934396561356461613133626365663466646" + "633613561613966336232363830363763663831313233333938613833386665336363222c0a20202020" From 6c2538bdfa1a3dd30bc034bd92ff58b3c7849e07 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 17 Aug 2023 21:46:38 +0800 Subject: [PATCH 09/15] format code --- .../src/test/java/org/tron/core/ShieldWalletTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java index 6151f4b686e..35bf8044781 100644 --- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java +++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java @@ -365,7 +365,8 @@ public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeE + "205d2c0a2020202022736869656c6465645f54524332305f636f6e74726163745f61646472657373223" + "a2234313434303037393739333539454341433339354242443343454638303630443344463244433346" + "3031220a7d")); - PrivateShieldedTRC20ParametersWithoutAsk.Builder builder = PrivateShieldedTRC20ParametersWithoutAsk.newBuilder(); + PrivateShieldedTRC20ParametersWithoutAsk.Builder builder = + PrivateShieldedTRC20ParametersWithoutAsk.newBuilder(); try { JsonFormat.merge(parameter, builder, false); } catch (ParseException e) { @@ -373,8 +374,8 @@ public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeE } try { - ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParametersWithoutAsk( - builder.build()); + ShieldedTRC20Parameters shieldedTRC20Parameters = + wallet1.createShieldedContractParametersWithoutAsk(builder.build()); Assert.assertNotNull(shieldedTRC20Parameters); } catch (Exception e) { Assert.fail(); From fa054cdc26cefe847ac27bd855d080646db33c90 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Tue, 22 Aug 2023 15:11:47 +0800 Subject: [PATCH 10/15] reset some commit, split pr --- .../common/parameter/CommonParameter.java | 24 +- .../src/main/java/org/tron/core/Constant.java | 4 +- .../src/main/java/org/tron/core/Wallet.java | 14 +- .../java/org/tron/core/config/args/Args.java | 26 +- .../org/tron/common/config/args/ArgsTest.java | 2 +- .../java/org/tron/core/ShieldWalletTest.java | 384 ------------------ .../test/java/org/tron/core/WalletTest.java | 120 +----- .../tron/core/db/TransactionExpireTest.java | 46 --- .../core/zksnark/MerkleContainerTest.java | 4 - .../core/zksnark/ShieldedReceiveTest.java | 16 +- 10 files changed, 53 insertions(+), 587 deletions(-) delete mode 100644 framework/src/test/java/org/tron/core/ShieldWalletTest.java diff --git a/common/src/main/java/org/tron/common/parameter/CommonParameter.java b/common/src/main/java/org/tron/common/parameter/CommonParameter.java index e89c512eb5e..06ea16321f3 100644 --- a/common/src/main/java/org/tron/common/parameter/CommonParameter.java +++ b/common/src/main/java/org/tron/common/parameter/CommonParameter.java @@ -180,21 +180,21 @@ public class CommonParameter { @Getter @Setter public String nodeExternalIp; -// @Getter -// @Setter -// public boolean nodeDiscoveryPublicHomeNode; -// @Getter -// @Setter -// public long nodeDiscoveryPingTimeout; -// @Getter -// @Setter -// public long nodeP2pPingInterval; + @Getter + @Setter + public boolean nodeDiscoveryPublicHomeNode; + @Getter + @Setter + public long nodeDiscoveryPingTimeout; + @Getter + @Setter + public long nodeP2pPingInterval; @Getter @Setter public int nodeP2pVersion; -// @Getter -// @Setter -// public String p2pNodeId; + @Getter + @Setter + public String p2pNodeId; @Getter @Setter public boolean nodeEnableIpv6 = false; diff --git a/common/src/main/java/org/tron/core/Constant.java b/common/src/main/java/org/tron/core/Constant.java index 31e4344a405..03cb64cd18a 100644 --- a/common/src/main/java/org/tron/core/Constant.java +++ b/common/src/main/java/org/tron/core/Constant.java @@ -101,8 +101,8 @@ public class Constant { public static final String NODE_MAX_CONNECTIONS_WITH_SAME_IP = "node.maxConnectionsWithSameIp"; public static final String NODE_MIN_PARTICIPATION_RATE = "node.minParticipationRate"; public static final String NODE_LISTEN_PORT = "node.listen.port"; - //public static final String NODE_DISCOVERY_PUBLIC_HOME_NODE = "node.discovery.public.home.node"; - //public static final String NODE_DISCOVERY_PING_TIMEOUT = "node.discovery.ping.timeout"; + public static final String NODE_DISCOVERY_PUBLIC_HOME_NODE = "node.discovery.public.home.node"; + public static final String NODE_DISCOVERY_PING_TIMEOUT = "node.discovery.ping.timeout"; public static final String NODE_P2P_PING_INTERVAL = "node.p2p.pingInterval"; public static final String NODE_P2P_VERSION = "node.p2p.version"; diff --git a/framework/src/main/java/org/tron/core/Wallet.java b/framework/src/main/java/org/tron/core/Wallet.java index 7db1da5872e..3560a7032bc 100755 --- a/framework/src/main/java/org/tron/core/Wallet.java +++ b/framework/src/main/java/org/tron/core/Wallet.java @@ -2054,16 +2054,8 @@ public IncrementalMerkleTree getMerkleTreeOfBlock(long blockNum) throws ZksnarkE try { if (chainBaseManager.getMerkleTreeIndexStore().has(ByteArray.fromLong(blockNum))) { - byte[] treeRoot = chainBaseManager.getMerkleTreeIndexStore().get(blockNum); - if (treeRoot == null) { - return null; - } - IncrementalMerkleTreeCapsule treeCapsule = chainBaseManager.getMerkleTreeStore() - .get(treeRoot); - if (treeCapsule == null) { - return null; - } - return treeCapsule.getInstance(); + return IncrementalMerkleTree + .parseFrom(chainBaseManager.getMerkleTreeIndexStore().get(blockNum)); } } catch (Exception ex) { logger.error("GetMerkleTreeOfBlock failed, blockNum:{}", blockNum, ex); @@ -4121,7 +4113,7 @@ private void checkBigIntegerRange(BigInteger in) throws ContractValidateExceptio } } - public byte[] getShieldedContractScalingFactor(byte[] contractAddress) + private byte[] getShieldedContractScalingFactor(byte[] contractAddress) throws ContractExeException { String methodSign = "scalingFactor()"; byte[] selector = new byte[4]; diff --git a/framework/src/main/java/org/tron/core/config/args/Args.java b/framework/src/main/java/org/tron/core/config/args/Args.java index f26a3debbcd..7b779e4cc4d 100644 --- a/framework/src/main/java/org/tron/core/config/args/Args.java +++ b/framework/src/main/java/org/tron/core/config/args/Args.java @@ -138,9 +138,9 @@ public static void clearParam() { PARAMETER.nodeListenPort = 0; PARAMETER.nodeDiscoveryBindIp = ""; PARAMETER.nodeExternalIp = ""; - // PARAMETER.nodeDiscoveryPublicHomeNode = false; - // PARAMETER.nodeDiscoveryPingTimeout = 15000; - // PARAMETER.nodeP2pPingInterval = 0L; + PARAMETER.nodeDiscoveryPublicHomeNode = false; + PARAMETER.nodeDiscoveryPingTimeout = 15000; + PARAMETER.nodeP2pPingInterval = 0L; PARAMETER.nodeP2pVersion = 0; PARAMETER.nodeEnableIpv6 = false; PARAMETER.dnsTreeUrls = new ArrayList<>(); @@ -168,7 +168,7 @@ public static void clearParam() { PARAMETER.forbidTransferToContract = 0; PARAMETER.tcpNettyWorkThreadNum = 0; PARAMETER.udpNettyWorkThreadNum = 0; - // PARAMETER.p2pNodeId = ""; + PARAMETER.p2pNodeId = ""; PARAMETER.solidityNode = false; PARAMETER.trustNodeAddr = ""; PARAMETER.walletExtensionApi = false; @@ -638,17 +638,17 @@ public static void setParam(final String[] args, final String confFileName) { bindIp(config); externalIp(config); - //PARAMETER.nodeDiscoveryPublicHomeNode = - // config.hasPath(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE) && config - // .getBoolean(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE); + PARAMETER.nodeDiscoveryPublicHomeNode = + config.hasPath(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE) && config + .getBoolean(Constant.NODE_DISCOVERY_PUBLIC_HOME_NODE); - //PARAMETER.nodeDiscoveryPingTimeout = - // config.hasPath(Constant.NODE_DISCOVERY_PING_TIMEOUT) - // ? config.getLong(Constant.NODE_DISCOVERY_PING_TIMEOUT) : 15000; + PARAMETER.nodeDiscoveryPingTimeout = + config.hasPath(Constant.NODE_DISCOVERY_PING_TIMEOUT) + ? config.getLong(Constant.NODE_DISCOVERY_PING_TIMEOUT) : 15000; - //PARAMETER.nodeP2pPingInterval = - // config.hasPath(Constant.NODE_P2P_PING_INTERVAL) - // ? config.getLong(Constant.NODE_P2P_PING_INTERVAL) : 0; + PARAMETER.nodeP2pPingInterval = + config.hasPath(Constant.NODE_P2P_PING_INTERVAL) + ? config.getLong(Constant.NODE_P2P_PING_INTERVAL) : 0; PARAMETER.nodeP2pVersion = config.hasPath(Constant.NODE_P2P_VERSION) diff --git a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java index d08cccf9d13..e3fc7a88a90 100644 --- a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java @@ -34,7 +34,7 @@ public void destroy() { public void testConfig() { Assert.assertEquals(Args.getInstance().getMaxTransactionPendingSize(), 2000); Assert.assertEquals(Args.getInstance().getPendingTransactionTimeout(), 60_000); - //Assert.assertEquals(Args.getInstance().getNodeDiscoveryPingTimeout(), 15_000); + Assert.assertEquals(Args.getInstance().getNodeDiscoveryPingTimeout(), 15_000); Assert.assertEquals(Args.getInstance().getMaxFastForwardNum(), 3); Assert.assertEquals(Args.getInstance().getBlockCacheTimeout(), 60); Assert.assertEquals(Args.getInstance().isNodeDetectEnable(), false); diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java deleted file mode 100644 index 35bf8044781..00000000000 --- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java +++ /dev/null @@ -1,384 +0,0 @@ -package org.tron.core; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.tron.core.services.http.FullNodeHttpApiService.librustzcashInitZksnarkParams; - -import java.math.BigInteger; -import javax.annotation.Resource; -import org.junit.Assert; -import org.junit.Test; -import org.tron.api.GrpcAPI.PrivateParameters; -import org.tron.api.GrpcAPI.PrivateParametersWithoutAsk; -import org.tron.api.GrpcAPI.PrivateShieldedTRC20Parameters; -import org.tron.api.GrpcAPI.PrivateShieldedTRC20ParametersWithoutAsk; -import org.tron.api.GrpcAPI.ShieldedAddressInfo; -import org.tron.api.GrpcAPI.ShieldedTRC20Parameters; -import org.tron.common.BaseTest; -import org.tron.common.utils.ByteArray; -import org.tron.core.capsule.TransactionCapsule; -import org.tron.core.config.args.Args; -import org.tron.core.exception.ContractExeException; -import org.tron.core.services.http.JsonFormat; -import org.tron.core.services.http.JsonFormat.ParseException; - - -public class ShieldWalletTest extends BaseTest { - - @Resource - private Wallet wallet; - - static { - dbPath = "shield_wallet_test"; - Args.setParam(new String[] {"-d", dbPath}, Constant.TEST_CONF); - } - - @Test - public void testCreateShieldedTransaction1() { - librustzcashInitZksnarkParams(); - String transactionStr1 = new String(ByteArray.fromHexString( - "0x7b0a20202020227472616e73706172656e745f66726f6d5f61646472657373223a202234433930413" - + "73241433344414546324536383932343545463430303839443634314345414337373433323433414233" - + "31333136303030222c0a202020202266726f6d5f616d6f756e74223a203130303030303030302c0a202" - + "02020226f766b223a223566643165636466643637396232616461333337623235306231303234373138" - + "6633316439636237316361653664666363396131613637626134373033643863222c0a2020202022736" - + "869656c6465645f7265636569766573223a205b0a20202020202020207b0a2020202020202020202020" - + "20226e6f7465223a207b0a202020202020202020202020202020202276616c7565223a2039303030303" - + "030302c0a20202020202020202020202020202020227061796d656e745f61646472657373223a20227a" - + "74726f6e3179616d336a723270746d79706c707030747978387974707a36736a64786364657a306a333" - + "36673636d656a76376e6863346171336d766b687275726772777671653932636a6c68356b3367222c0a" - + "202020202020202020202020202020202272636d223a202237323330353362636266656364663564613" - + "63663313861623033373634373665663330386336316237616265383931623263303165393033626362" - + "3837633065222c0a20202020202020202020202020202020226d656d6f223a20223232323232220a202" - + "0202020202020202020207d0a20202020202020207d0a202020205d0a7d")); - PrivateParameters.Builder builder1 = PrivateParameters.newBuilder(); - try { - JsonFormat.merge(transactionStr1, builder1, false); - } catch (ParseException e) { - Assert.fail(); - } - - try { - TransactionCapsule transactionCapsule = wallet.createShieldedTransaction(builder1.build()); - Assert.assertNotNull(transactionCapsule); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test - public void testCreateShieldedTransaction2() { - librustzcashInitZksnarkParams(); - String transactionStr2 = new String(ByteArray.fromHexString( - "7b0a202020202261736b223a20223938666430333136376632333437623534643737323338343137663" - + "6373038643537323939643938376362613838353564653037626532346236316464653064222c0a2020" - + "2020226e736b223a2022643063623330653764306634653435333535363134333463303462616339316" - + "63039643230653664366234363361623031626534663531386230363839653039222c0a20202020226f" - + "766b223a202235666431656364666436373962326164613333376232353062313032343731386633316" - + "439636237316361653664666363396131613637626134373033643863222c0a2020202022736869656c" - + "6465645f7370656e6473223a205b0a20202020202020207b200a090909226e6f7465223a207b0a20202" - + "0202020202020202020202020202276616c7565223a2039303030303030302c0a202020202020202020" - + "20202020202020227061796d656e745f61646472657373223a20227a74726f6e3179616d336a7232707" - + "46d79706c707030747978387974707a36736a64786364657a306a33336673636d656a76376e68633461" - + "71336d766b687275726772777671653932636a6c68356b3367222c0a202020202020202020202020202" - + "020202272636d223a202237323330353362636266656364663564613636633138616230333736343736" - + "656633303863363162376162653839316232633031653930336263623837633065222c0a20202020202" - + "020202020202020202020226d656d6f223a20223232323232220a2020202020202020202020207d2c0a" - + "20202020202020202020202022616c706861223a2022323936656531633532633933663734306433616" - + "23162373265366463663561626231643666343965643865646236663334656633666462366537366335" - + "353063222c0a20202020202020202020202022766f7563686572223a207b0a202020202020202020202" - + "0202274726565223a207b0a20202020202020202020202020202020226c656674223a207b0a20202020" - + "2020202020202020202020202020202022636f6e74656e74223a2022346565653236313963343862613" - + "26264303235303235363330636430313362616361663337653961323162323965333938393735623763" - + "653864363436613265220a202020202020202020202020202020207d2c0a20202020202020202020202" - + "020202020227269676874223a207b0a202020202020202020202020202020202020202022636f6e7465" - + "6e74223a202235333863326139313537313333356334666138383866396234336239666164643931633" - + "334666366326265666130333931353932613564366535343539623537220a2020202020202020202020" - + "20202020207d0a2020202020202020202020207d2c0a202020202020202020202020227274223a20226" - + "33539376436633235663131623938613638303034343838393138386638613934616237393265353432" - + "32313461386636346632363334616535346535353531220a20202020202020207d2c0a2020202020202" - + "020202020202270617468223a2022323032306232656564303331643464366134663032613039376638" - + "30623534636331353431643431363363366236663539373166383862366534316433356335333831343" - + "23031323933356631346236373635303962383165623439656632356633393236396564373233303932" - + "33386234633134353830333534346236343664636136326432306531663334623033346434613363643" - + "23835353765323930376562663939306339313866363465636235306139346630316436666461356361" - + "35633765663732323032386537623834316463626334376363656236396437636238643934323435666" - + "23763623262613361376136626331386631336639343566376462643665326132306135313232633038" - + "66663963313631643963613666633436323037333339366337643764333865386565343863646233626" - + "56137653232333031333465643661323064326531363432633961343632323239323839653562306533" - + "62376639303038653033303163626239333338356565306532316461323534353037336362353832303" - + "13664363235323936383937316138336461383532316436353338326536316630313736363436643737" - + "31633931353238653332373665653435333833653461323066656530653532383032636230633436623" - + "16562346433373663363236393766343735396636633839313766613335323537313230326664373738" - + "66643731323230346336393337643738663432363835663834623433616433623762303066383132383" - + "53636326638356336613638656631316436326164316133656530383530323030373639353537626336" - + "38326231626633303836343666643062323265363438653862396539386635376532396635616634306" - + "63665646238333365326334393230303865656162306331336162643630363965363331303139376266" - + "38306639633165613664653738666431396362616532346434613532306536636633303233323038643" - + "56661343365356131306431313630356163373433306261316635643831666231623638643239613634" - + "30343035373637373439653834313532373637333230366163613834343864383236336535343764356" - + "66632393530653265643338333965393938643331636263366163396664353762633630303262313539" - + "32313632306364316338646266366533616363376138303433396263343936326366323562396463653" - + "76338393666336135626437303830336663356130653333636630303230366564623136643031393037" - + "62373539393737643736353064616437653365633034396166316133643837353338306236393763383" - + "63263396563356435316332303165613636373566393535316565623964666161613932343762633938" - + "35383237306433643361346335616661373137376139383464356564316265323435313230643661636" - + "46564663935663630386530396661353366623433646364303939303437353732366335313331323130" - + "63396535636165616239376630653634326632306264373462323561616362393233373861383731626" - + "63237643232356366633236626163613334346131656133356664643934353130663364313537303832" - + "63323031623737646163346432346662373235386333633532383730346335393433306236333037313" - + "86265633438363432313833373032316366373564616236353132306563363737313134633237323036" - + "66356465626331633165643636663935653262313838356461356237626533643733366231646539383" - + "53739343733303438323034373737633837373661336231653639623733613632666137303166613466" - + "37613632383264396165653263376136623832653739333764373038316332336332306261343962363" - + "53966626430623733333432313165613661396439646631383563373537653730616138316461353632" - + "66623931326238346634396263653732323034336666353435376631336239323662363164663535326" - + "43465343032656536646331343633663939613533356639613731333433393236346435623631366232" - + "30376239396162646333373330393931636339323734373237643764383264323863623739346564626" - + "33730333462346630303533666637633462363830343434323064366336333961633234623436626431" - + "39333431633931623133666463616233313538316464616637663134313133333661323731663364306" - + "16135323831333230386163396366396333393165336664343238393164323732333861383161386135" - + "63316433613732623162636265613863663434613538636537333839363133323039313264383262326" - + "33262636132333166373165666366363137333766626630613038626566613034313632313561656566" - + "35336538626236643233333930613230653131306465363563393037623964656134616530626438336" - + "13462306135316265613137353634366136346331326234633966393331623263623331623439323064" - + "38323833333836656632656630376562646262343338336331326137333961393533613464366530643" - + "66662313133396134303336643639336266626236633230666665396663303366313862313736633939" - + "38383036343339666630626238616431393361666462323762326363626338383835363931366464383" - + "03465333432303831376465333661623264353766656230373736333462636137373831396338653062" - + "64323938633034663666656430653661383363633133353663613135353230346565653236313963343" - + "86261326264303235303235363330636430313362616361663337653961323162323965333938393735" - + "62376365386436343661326530313030303030303030303030303030220a20202020202020207d0a202" - + "020205d2c0a2020202022736869656c6465645f7265636569766573223a205b0a20202020202020207b" - + "0a202020202020202020202020226e6f7465223a207b0a2020202020202020202020202020202022766" - + "16c7565223a2038303030303030302c0a20202020202020202020202020202020227061796d656e745f" - + "61646472657373223a20227a74726f6e31356b657a70736d71303568336d616a6e6c7a6834306772796" - + "a6d676d3630783265686a7967633771387336376d6c753835376375747177613334386e76706765706e" - + "35786b336735727278222c0a202020202020202020202020202020202272636d223a202237323330353" - + "36263626665636466356461363663313861623033373634373665663330386336316237616265383931" - + "6232633031653930336263623837633065222c0a20202020202020202020202020202020226d656d6f2" - + "23a2022313131313131313131220a2020202020202020202020207d0a20202020202020207d0a202020" - + "205d2c0a202020202276697369626c6522203a20747275650a7d")); - PrivateParameters.Builder builder2 = PrivateParameters.newBuilder(); - try { - JsonFormat.merge(transactionStr2, builder2, true); - } catch (ParseException e) { - Assert.fail(); - } - - try { - TransactionCapsule transactionCapsule = wallet.createShieldedTransaction(builder2.build()); - Assert.assertNotNull(transactionCapsule); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test - public void testCreateShieldedTransactionWithoutSpendAuthSig() { - librustzcashInitZksnarkParams(); - String transactionStr3 = new String(ByteArray.fromHexString( - "7b0a2020202022616b223a2022373161643638633466353035373464356164333735343863626538363" - + "63031663732393662393161306362303535353733313462373830383437323730326465222c0a202020" - + "20226e736b223a202264306362333065376430663465343533353536313433346330346261633931663" - + "039643230653664366234363361623031626534663531386230363839653039222c0a20202020226f76" - + "6b223a20223566643165636466643637396232616461333337623235306231303234373138663331643" - + "9636237316361653664666363396131613637626134373033643863222c0a2020202022736869656c64" - + "65645f7370656e6473223a205b0a20202020202020207b0a202020202020202020202020226e6f74652" - + "23a207b0a202020202020202020202020202020202276616c7565223a2039303030303030302c0a2020" - + "2020202020202020202020202020227061796d656e745f61646472657373223a20227a74726f6e31796" - + "16d336a723270746d79706c707030747978387974707a36736a64786364657a306a33336673636d656a" - + "76376e6863346171336d766b687275726772777671653932636a6c68356b3367222c0a2020202020202" - + "02020202020202020202272636d223a2022373233303533626362666563646635646136366331386162" - + "30333736343736656633303863363162376162653839316232633031653930336263623837633065222" - + "c0a20202020202020202020202020202020226d656d6f223a20223232323232220a2020202020202020" - + "202020207d2c0a20202020202020202020202022616c706861223a20223239366565316335326339336" - + "63734306433616231623732653664636635616262316436663439656438656462366633346566336664" - + "62366537366335353063222c0a20202020202020202020202022766f7563686572223a207b0a2020202" - + "02020202020202020202020202274726565223a207b0a20202020202020202020202020202020202020" - + "20226c656674223a207b0a20202020202020202020202020202020202020202020202022636f6e74656" - + "e74223a2022346565653236313963343862613262643032353032353633306364303133626163616633" - + "37653961323162323965333938393735623763653864363436613265220a20202020202020202020202" - + "020202020202020207d2c0a2020202020202020202020202020202020202020227269676874223a207b" - + "0a20202020202020202020202020202020202020202020202022636f6e74656e74223a2022353338633" - + "26139313537313333356334666138383866396234336239666164643931633334666366326265666130" - + "333931353932613564366535343539623537220a20202020202020202020202020202020202020207d0" - + "a202020202020202020202020202020207d2c0a20202020202020202020202020202020227274223a20" - + "22633539376436633235663131623938613638303034343838393138386638613934616237393265353" - + "43232313461386636346632363334616535346535353531220a2020202020202020202020207d2c0a20" - + "20202020202020202020202270617468223a20223230323062326565643033316434643661346630326" - + "13039376638306235346363313534316434313633633662366635393731663838623665343164333563" - + "35333831343230313239333566313462363736353039623831656234396566323566333932363965643" - + "73233303932333862346331343538303335343462363436646361363264323065316633346230333464" - + "34613363643238353537653239303765626639393063393138663634656362353061393466303164366" - + "66461356361356337656637323230323865376238343164636263343763636562363964376362386439" - + "34323435666237636232626133613761366263313866313366393435663764626436653261323061353" - + "13232633038666639633136316439636136666334363230373333393663376437643338653865653438" - + "63646233626561376532323330313334656436613230643265313634326339613436323232393238396" - + "53562306533623766393030386530333031636262393333383565653065323164613235343530373363" - + "62353832303136643632353239363839373161383364613835323164363533383265363166303137363" - + "63436643737316339313532386533323736656534353338336534613230666565306535323830326362" - + "30633436623165623464333736633632363937663437353966366338393137666133353235373132303" - + "26664373738666437313232303463363933376437386634323638356638346234336164336237623030" - + "66383132383536363266383563366136386566313164363261643161336565303835303230303736393" - + "53537626336383262316266333038363436666430623232653634386538623965393866353765323966" - + "35616634306636656462383333653263343932303038656561623063313361626436303639653633313" - + "03139376266383066396331656136646537386664313963626165323464346135323065366366333032" - + "33323038643566613433653561313064313136303561633734333062613166356438316662316236386" - + "43239613634303430353736373734396538343135323736373332303661636138343438643832363365" - + "35343764356666323935306532656433383339653939386433316362633661633966643537626336303" - + "03262313539323136323063643163386462663665336163633761383034333962633439363263663235" - + "62396463653763383936663361356264373038303366633561306533336366303032303665646231366" - + "43031393037623735393937376437363530646164376533656330343961663161336438373533383062" - + "36393763383632633965633564353163323031656136363735663935353165656239646661616139323" - + "43762633938353832373064336433613463356166613731373761393834643565643162653234353132" - + "30643661636465646639356636303865303966613533666234336463643039393034373537323663353" - + "13331323130633965356361656162393766306536343266323062643734623235616163623932333738" - + "61383731626632376432323563666332366261636133343461316561333566646439343531306633643" - + "13537303832633230316237376461633464323466623732353863336335323837303463353934333062" - + "36333037313862656334383634323138333730323163663735646162363531323065633637373131346" - + "33237323036663564656263316331656436366639356532623138383564613562376265336437333662" - + "31646539383537393437333034383230343737376338373736613362316536396237336136326661373" - + "03166613466376136323832643961656532633761366238326537393337643730383163323363323062" - + "61343962363539666264306237333334323131656136613964396466313835633735376537306161383" - + "16461353632666239313262383466343962636537323230343366663534353766313362393236623631" - + "64663535326434653430326565366463313436336639396135333566396137313334333932363464356" - + "23631366232303762393961626463333733303939316363393237343732376437643832643238636237" - + "39346564626337303334623466303035336666376334623638303434343230643663363339616332346" - + "23436626431393334316339316231336664636162333135383164646166376631343131333336613237" - + "31663364306161353238313332303861633963663963333931653366643432383931643237323338613" - + "83161386135633164336137326231626362656138636634346135386365373338393631333230393132" - + "64383262326332626361323331663731656663663631373337666266306130386265666130343136323" - + "13561656566353365386262366432333339306132306531313064653635633930376239646561346165" - + "30626438336134623061353162656131373536343661363463313262346339663933316232636233316" - + "23439323064383238333338366566326566303765626462623433383363313261373339613935336134" - + "64366530643666623131333961343033366436393362666262366332306666653966633033663138623" - + "13736633939383830363433396666306262386164313933616664623237623263636263383838353639" - + "31366464383034653334323038313764653336616232643537666562303737363334626361373738313" - + "96338653062643239386330346636666564306536613833636331333536636131353532303465656532" - + "36313963343862613262643032353032353633306364303133626163616633376539613231623239653" - + "3393839373562376365386436343661326530313030303030303030303030303030220a202020202020" - + "20207d0a202020205d2c0a2020202022736869656c6465645f7265636569766573223a205b0a2020202" - + "0202020207b0a202020202020202020202020226e6f7465223a207b0a20202020202020202020202020" - + "2020202276616c7565223a2038303030303030302c0a202020202020202020202020202020202270617" - + "96d656e745f61646472657373223a20227a74726f6e31356b657a70736d71303568336d616a6e6c7a68" - + "34306772796a6d676d3630783265686a7967633771387336376d6c753835376375747177613334386e7" - + "6706765706e35786b336735727278222c0a202020202020202020202020202020202272636d223a2022" - + "37323330353362636266656364663564613636633138616230333736343736656633303863363162376" - + "162653839316232633031653930336263623837633065222c0a20202020202020202020202020202020" - + "226d656d6f223a2022313131313131313131220a2020202020202020202020207d0a202020202020202" - + "07d0a202020205d2c0a202020202276697369626c65223a20747275650a7d")); - PrivateParametersWithoutAsk.Builder builder3 = PrivateParametersWithoutAsk.newBuilder(); - try { - JsonFormat.merge(transactionStr3, builder3, false); - } catch (ParseException e) { - Assert.fail(); - } - - try { - TransactionCapsule transactionCapsule = wallet.createShieldedTransactionWithoutSpendAuthSig( - builder3.build()); - Assert.assertNotNull(transactionCapsule); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test - public void testGetNewShieldedAddress() { - librustzcashInitZksnarkParams(); - try { - ShieldedAddressInfo shieldedAddressInfo = wallet.getNewShieldedAddress(); - Assert.assertNotNull(shieldedAddressInfo); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test - public void testCreateShieldedContractParameters() throws ContractExeException { - librustzcashInitZksnarkParams(); - Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); - Wallet wallet1 = spy(new Wallet()); - - doReturn(BigInteger.valueOf(1).toByteArray()) - .when(wallet1).getShieldedContractScalingFactor( - ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); - String parameter = new String(ByteArray.fromHexString( - "7b0a202020202261736b223a22633235313365396533303834393439333262643832653063653533363" - + "63264313734323164393062373261383437316130613132623835353261333336653032222c0a202020" - + "20226e736b223a223463366266336464346130363433643230623632386637653435393830633565313" - + "8376630376135316436663365383661616631616239313663303765623064222c0a20202020226f766b" - + "223a2231376135386439613530353864613665343263613132636432383964306136616131363962393" - + "236633138653139626361353138623864366638363734653433222c0a202020202266726f6d5f616d6f" - + "756e74223a22313030222c0a2020202022736869656c6465645f7265636569766573223a5b0a2020202" - + "0202020207b0a202020202020202020202020226e6f7465223a7b0a2020202020202020202020202020" - + "20202276616c7565223a3130302c0a20202020202020202020202020202020227061796d656e745f616" - + "46472657373223a227a74726f6e317939397536656a71656e757076666b70356736713679716b703061" - + "34346334386374613064643567656a7471613476323768716132636768667664786e6d6e65683671717" - + "1303366613735222c0a202020202020202020202020202020202272636d223a22313662366635653430" - + "34343461623765656162313161653636313363323766333531313739373165666138376237313536306" - + "235383133383239633933393064220a2020202020202020202020207d0a20202020202020207d0a2020" - + "20205d2c0a2020202022736869656c6465645f54524332305f636f6e74726163745f616464726573732" - + "23a22343134343030373937393335394543414333393542424433434546383036304433444632444333" - + "463031220a7d")); - PrivateShieldedTRC20Parameters.Builder builder = PrivateShieldedTRC20Parameters.newBuilder(); - try { - JsonFormat.merge(parameter, builder, false); - } catch (ParseException e) { - Assert.fail(); - } - - try { - ShieldedTRC20Parameters shieldedTRC20Parameters = wallet1.createShieldedContractParameters( - builder.build()); - Assert.assertNotNull(shieldedTRC20Parameters); - } catch (Exception e) { - Assert.fail(); - } - } - - @Test - public void testCreateShieldedContractParametersWithoutAsk() throws ContractExeException { - librustzcashInitZksnarkParams(); - Args.getInstance().setFullNodeAllowShieldedTransactionArgs(true); - - Wallet wallet1 = spy(new Wallet()); - doReturn(BigInteger.valueOf(1).toByteArray()) - .when(wallet1).getShieldedContractScalingFactor( - ByteArray.fromHexString("4144007979359ECAC395BBD3CEF8060D3DF2DC3F01")); - String parameter = new String(ByteArray.fromHexString( - "7b0a2020202022616b223a2230656261373361343865323934396561356461613133626365663466646" - + "633613561613966336232363830363763663831313233333938613833386665336363222c0a20202020" - + "226e736b223a22346336626633646434613036343364323062363238663765343539383063356531383" - + "76630376135316436663365383661616631616239313663303765623064222c0a20202020226f766b22" - + "3a223137613538643961353035386461366534326361313263643238396430613661613136396239323" - + "6633138653139626361353138623864366638363734653433222c0a202020202266726f6d5f616d6f75" - + "6e74223a22313030222c0a2020202022736869656c6465645f7265636569766573223a5b0a202020202" - + "02020207b0a202020202020202020202020226e6f7465223a7b0a202020202020202020202020202020" - + "202276616c7565223a3130302c0a20202020202020202020202020202020227061796d656e745f61646" - + "472657373223a227a74726f6e317939397536656a71656e757076666b70356736713679716b70306134" - + "346334386374613064643567656a7471613476323768716132636768667664786e6d6e6568367171713" - + "03366613735222c0a202020202020202020202020202020202272636d223a2231366236663565343034" - + "34346162376565616231316165363631336332376633353131373937316566613837623731353630623" - + "5383133383239633933393064220a2020202020202020202020207d0a20202020202020207d0a202020" - + "205d2c0a2020202022736869656c6465645f54524332305f636f6e74726163745f61646472657373223" - + "a2234313434303037393739333539454341433339354242443343454638303630443344463244433346" - + "3031220a7d")); - PrivateShieldedTRC20ParametersWithoutAsk.Builder builder = - PrivateShieldedTRC20ParametersWithoutAsk.newBuilder(); - try { - JsonFormat.merge(parameter, builder, false); - } catch (ParseException e) { - Assert.fail(); - } - - try { - ShieldedTRC20Parameters shieldedTRC20Parameters = - wallet1.createShieldedContractParametersWithoutAsk(builder.build()); - Assert.assertNotNull(shieldedTRC20Parameters); - } catch (Exception e) { - Assert.fail(); - } - } -} diff --git a/framework/src/test/java/org/tron/core/WalletTest.java b/framework/src/test/java/org/tron/core/WalletTest.java index e034df3c0bd..94d799b881a 100644 --- a/framework/src/test/java/org/tron/core/WalletTest.java +++ b/framework/src/test/java/org/tron/core/WalletTest.java @@ -39,11 +39,9 @@ import org.junit.Ignore; import org.junit.Test; import org.tron.api.GrpcAPI; -import org.tron.api.GrpcAPI.AccountNetMessage; import org.tron.api.GrpcAPI.AssetIssueList; import org.tron.api.GrpcAPI.BlockList; import org.tron.api.GrpcAPI.ExchangeList; -import org.tron.api.GrpcAPI.NumberMessage; import org.tron.api.GrpcAPI.ProposalList; import org.tron.common.BaseTest; import org.tron.common.crypto.ECKey; @@ -139,7 +137,7 @@ public class WalletTest extends BaseTest { static { dbPath = "output_wallet_test"; - Args.setParam(new String[] {"-d", dbPath}, Constant.TEST_CONF); + Args.setParam(new String[]{"-d", dbPath}, Constant.TEST_CONF); OWNER_ADDRESS = Wallet.getAddressPreFixString() + "548794500882809695a8a687866e76d4271a1abc"; RECEIVER_ADDRESS = Wallet.getAddressPreFixString() + "abd4b9367799eaa3197fecb144eb71de1e049150"; } @@ -237,11 +235,11 @@ private void addTransactionInfoToStore(Transaction transaction) { private static Transaction getBuildTransaction( TransferContract transferContract, long transactionTimestamp, long refBlockNum) { return Transaction.newBuilder().setRawData( - Transaction.raw.newBuilder().setTimestamp(transactionTimestamp) - .setRefBlockNum(refBlockNum) - .addContract( - Contract.newBuilder().setType(ContractType.TransferContract) - .setParameter(Any.pack(transferContract)).build()).build()) + Transaction.raw.newBuilder().setTimestamp(transactionTimestamp) + .setRefBlockNum(refBlockNum) + .addContract( + Contract.newBuilder().setType(ContractType.TransferContract) + .setParameter(Any.pack(transferContract)).build()).build()) .build(); } @@ -290,9 +288,9 @@ private void addBlockToStore(Block block) { private static Block getBuildBlock(long timestamp, long num, long witnessId, String witnessAddress, Transaction transaction, Transaction transactionNext) { return Block.newBuilder().setBlockHeader(BlockHeader.newBuilder().setRawData( - raw.newBuilder().setTimestamp(timestamp).setNumber(num).setWitnessId(witnessId) - .setWitnessAddress(ByteString.copyFrom(ByteArray.fromHexString(witnessAddress))) - .build()).build()).addTransactions(transaction).addTransactions(transactionNext) + raw.newBuilder().setTimestamp(timestamp).setNumber(num).setWitnessId(witnessId) + .setWitnessAddress(ByteString.copyFrom(ByteArray.fromHexString(witnessAddress))) + .build()).build()).addTransactions(transaction).addTransactions(transactionNext) .build(); } @@ -509,52 +507,6 @@ public void getPaginatedAssetIssueList() { } } - @Test - public void testGetAssetIssueByAccount() { - buildAssetIssue(); - // - AssetIssueList assetIssueList = wallet.getAssetIssueByAccount( - ByteString.copyFromUtf8("Address1")); - Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); - } - - @Test - public void testGetAssetIssueList() { - buildAssetIssue(); - // - AssetIssueList assetIssueList = wallet.getAssetIssueList(); - Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); - } - - @Test - public void testGetAssetIssueListByName() { - buildAssetIssue(); - // - AssetIssueList assetIssueList = wallet.getAssetIssueListByName( - ByteString.copyFromUtf8("Asset1")); - Assert.assertEquals(1, assetIssueList.getAssetIssueCount()); - } - - @Test - public void testGetAssetIssueById() { - buildAssetIssue(); - // - AssetIssueContract assetIssueContract = wallet.getAssetIssueById("id2"); - Assert.assertNotNull(assetIssueContract); - } - - @Test - public void testGetAccountNet() { - ByteString addressByte = ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS)); - AccountCapsule accountCapsule = - new AccountCapsule(Protocol.Account.newBuilder().setAddress(addressByte).build()); - accountCapsule.setBalance(1000_000_000L); - dbManager.getChainBaseManager().getAccountStore() - .put(accountCapsule.createDbKey(), accountCapsule); - AccountNetMessage accountNetMessage = wallet.getAccountNet(addressByte); - Assert.assertNotNull(accountNetMessage); - } - @Test public void getPaginatedProposalList() { buildProposal(); @@ -588,16 +540,6 @@ public void getPaginatedProposalList() { } - @Test - public void testGetProposalById() { - buildProposal(); - // - Proposal proposal = wallet.getProposalById(ByteString.copyFrom(ByteArray.fromLong(1L))); - Assert.assertNotNull(proposal); - proposal = wallet.getProposalById(ByteString.copyFrom(ByteArray.fromLong(3L))); - Assert.assertNull(proposal); - } - @Test public void getPaginatedExchangeList() { buildExchange(); @@ -608,24 +550,6 @@ public void getPaginatedExchangeList() { exchangeList.getExchangesList().get(1).getCreatorAddress().toStringUtf8()); } - @Test - public void testGetExchangeById() { - buildExchange(); - // - Exchange exchange = wallet.getExchangeById(ByteString.copyFrom(ByteArray.fromLong(1L))); - Assert.assertNotNull(exchange); - exchange = wallet.getExchangeById(ByteString.copyFrom(ByteArray.fromLong(3L))); - Assert.assertNull(exchange); - } - - @Test - public void testGetExchangeList() { - buildExchange(); - // - ExchangeList exchangeList = wallet.getExchangeList(); - Assert.assertEquals(2, exchangeList.getExchangesCount()); - } - @Test public void getBlock() { GrpcAPI.BlockReq req = GrpcAPI.BlockReq.getDefaultInstance(); @@ -652,12 +576,6 @@ public void getBlock() { assertEquals(block, wallet.getBlock(req)); } - @Test - public void testGetNextMaintenanceTime() { - NumberMessage numberMessage = wallet.getNextMaintenanceTime(); - Assert.assertEquals(0, numberMessage.getNum()); - } - //@Test public void testChainParameters() { @@ -742,8 +660,8 @@ public void testGetDelegatedResourceAccountIndex() { } private Any getDelegatedContractForCpu(String ownerAddress, String receiverAddress, - long frozenBalance, - long duration) { + long frozenBalance, + long duration) { return Any.pack( BalanceContract.FreezeBalanceContract.newBuilder() .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(ownerAddress))) @@ -779,13 +697,13 @@ private void freezeCpuForOwner() { } private Any getDelegateContractForBandwidth(String ownerAddress, String receiveAddress, - long unfreezeBalance) { + long unfreezeBalance) { return getLockedDelegateContractForBandwidth(ownerAddress, receiveAddress, unfreezeBalance, false); } private Any getLockedDelegateContractForBandwidth(String ownerAddress, String receiveAddress, - long unfreezeBalance, boolean lock) { + long unfreezeBalance, boolean lock) { return Any.pack(BalanceContract.DelegateResourceContract.newBuilder() .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(ownerAddress))) .setReceiverAddress(ByteString.copyFrom(ByteArray.fromHexString(receiveAddress))) @@ -1005,7 +923,7 @@ public void testGetAccountById() { chainBaseManager.getAccountIdIndexStore().put(ownerCapsule); Protocol.Account account = wallet.getAccountById( Protocol.Account.newBuilder().setAccountId(ByteString.copyFromUtf8("1001")).build()); - Assert.assertEquals(ownerCapsule.getAddress(), account.getAddress()); + Assert.assertEquals(ownerCapsule.getAddress(),account.getAddress()); } @Test @@ -1023,18 +941,18 @@ public void testGetAssetIssueByName() { String assetName = "My_asset"; String id = "10001"; AssetIssueCapsule assetCapsule = new AssetIssueCapsule(ByteArray.fromHexString(OWNER_ADDRESS), - id, assetName, "abbr", 1_000_000_000_000L, 6); + id,assetName,"abbr", 1_000_000_000_000L,6); chainBaseManager.getAssetIssueStore().put(assetCapsule.createDbKey(), assetCapsule); chainBaseManager.getAssetIssueV2Store().put(assetCapsule.createDbV2Key(), assetCapsule); try { AssetIssueContract assetIssue = wallet.getAssetIssueByName(ByteString.copyFromUtf8(assetName)); - Assert.assertEquals(ByteString.copyFromUtf8(assetName), assetIssue.getName()); - Assert.assertEquals(id, assetIssue.getId()); + Assert.assertEquals(ByteString.copyFromUtf8(assetName),assetIssue.getName()); + Assert.assertEquals(id,assetIssue.getId()); chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); assetIssue = wallet.getAssetIssueByName(ByteString.copyFromUtf8(assetName)); - Assert.assertEquals(ByteString.copyFromUtf8(assetName), assetIssue.getName()); - Assert.assertEquals(id, assetIssue.getId()); + Assert.assertEquals(ByteString.copyFromUtf8(assetName),assetIssue.getName()); + Assert.assertEquals(id,assetIssue.getId()); } catch (NonUniqueObjectException e) { Assert.fail(e.getMessage()); } diff --git a/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java b/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java index 1589787522a..f9b1a6c44e0 100644 --- a/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java +++ b/framework/src/test/java/org/tron/core/db/TransactionExpireTest.java @@ -12,7 +12,6 @@ import org.junit.Test; import org.tron.api.GrpcAPI; import org.tron.api.GrpcAPI.Return.response_code; -import org.tron.api.GrpcAPI.TransactionApprovedList; import org.tron.common.application.TronApplicationContext; import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.ByteArray; @@ -31,7 +30,6 @@ import org.tron.core.config.args.Args; import org.tron.core.store.WitnessScheduleStore; import org.tron.protos.Protocol; -import org.tron.protos.Protocol.Transaction; import org.tron.protos.Protocol.Transaction.Contract.ContractType; import org.tron.protos.contract.BalanceContract.TransferContract; @@ -107,48 +105,4 @@ public void testExpireTransaction() { GrpcAPI.Return result = wallet.broadcastTransaction(transactionCapsule.getInstance()); Assert.assertEquals(response_code.TRANSACTION_EXPIRATION_ERROR, result.getCode()); } - - @Test - public void testTransactionApprovedList() { - byte[] address = Args.getLocalWitnesses() - .getWitnessAccountAddress(CommonParameter.getInstance().isECKeyCryptoEngine()); - TransferContract transferContract = TransferContract.newBuilder() - .setAmount(1L) - .setOwnerAddress(ByteString.copyFrom(address)) - .setToAddress(ByteString.copyFrom(ByteArray.fromHexString( - (Wallet.getAddressPreFixString() + "A389132D6639FBDA4FBC8B659264E6B7C90DB086")))) - .build(); - TransactionCapsule transactionCapsule = - new TransactionCapsule(transferContract, ContractType.TransferContract); - transactionCapsule.setReference(blockCapsule.getNum(), blockCapsule.getBlockId().getBytes()); - transactionCapsule.sign(ByteArray.fromHexString(Args.getLocalWitnesses().getPrivateKey())); - - TransactionApprovedList transactionApprovedList = wallet.getTransactionApprovedList( - transactionCapsule.getInstance()); - Assert.assertTrue( - transactionApprovedList.getResult().getMessage().contains("Account does not exist!")); - - ByteString addressByte = ByteString.copyFrom(address); - AccountCapsule accountCapsule = - new AccountCapsule(Protocol.Account.newBuilder().setAddress(addressByte).build()); - accountCapsule.setBalance(1000_000_000L); - dbManager.getChainBaseManager().getAccountStore() - .put(accountCapsule.createDbKey(), accountCapsule); - transactionApprovedList = wallet.getTransactionApprovedList(transactionCapsule.getInstance()); - Assert.assertEquals("", transactionApprovedList.getResult().getMessage()); - - byte[] randomSig = org.tron.keystore.Wallet.generateRandomBytes(64); - Transaction transaction = transactionCapsule.getInstance().toBuilder().clearSignature() - .addSignature(ByteString.copyFrom(randomSig)).build(); - transactionApprovedList = wallet.getTransactionApprovedList(transaction); - Assert.assertEquals(TransactionApprovedList.Result.response_code.SIGNATURE_FORMAT_ERROR, - transactionApprovedList.getResult().getCode()); - - randomSig = org.tron.keystore.Wallet.generateRandomBytes(65); - transaction = transactionCapsule.getInstance().toBuilder().clearSignature() - .addSignature(ByteString.copyFrom(randomSig)).build(); - transactionApprovedList = wallet.getTransactionApprovedList(transaction); - Assert.assertEquals(TransactionApprovedList.Result.response_code.COMPUTE_ADDRESS_ERROR, - transactionApprovedList.getResult().getCode()); - } } diff --git a/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java b/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java index fd7cf943300..678eb137df0 100644 --- a/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java +++ b/framework/src/test/java/org/tron/core/zksnark/MerkleContainerTest.java @@ -23,7 +23,6 @@ import org.tron.protos.Protocol.Block; import org.tron.protos.Protocol.Transaction; import org.tron.protos.Protocol.Transaction.Contract.ContractType; -import org.tron.protos.contract.ShieldContract.IncrementalMerkleTree; import org.tron.protos.contract.ShieldContract.IncrementalMerkleVoucherInfo; import org.tron.protos.contract.ShieldContract.OutputPoint; import org.tron.protos.contract.ShieldContract.OutputPointInfo; @@ -333,9 +332,6 @@ public void getMerkleTreeWitnessInfoTest() throws Exception { //init initMerkleTreeWitnessInfo(); - IncrementalMerkleTree incrementalMerkleTree = wallet.getMerkleTreeOfBlock(99); - Assert.assertNotNull(incrementalMerkleTree); - //blockNum:100,txNum:1 ByteString txId1 = ByteString.copyFrom(ByteArray .fromHexString("59051fde6f2e47306f17fca57a4aab3c12d948b7980fd4163c93520b69a7b982")); diff --git a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java index d7409ed6807..514a5dfab76 100755 --- a/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java +++ b/framework/src/test/java/org/tron/core/zksnark/ShieldedReceiveTest.java @@ -17,7 +17,6 @@ import org.junit.Test; import org.tron.api.GrpcAPI.BytesMessage; import org.tron.api.GrpcAPI.DecryptNotes; -import org.tron.api.GrpcAPI.DecryptNotesMarked; import org.tron.api.GrpcAPI.ReceiveNote; import org.tron.api.GrpcAPI.SpendAuthSigParameters; import org.tron.api.GrpcAPI.TransactionExtention; @@ -2379,8 +2378,8 @@ public void pushSameSkAndScanAndSpend() throws Exception { chainBaseManager.addWitness(ByteString.copyFrom(witnessAddress)); //sometimes generate block failed, try several times. - long time = System.currentTimeMillis(); - Block block = getSignedBlock(witnessCapsule.getAddress(), time, privateKey); + + Block block = getSignedBlock(witnessCapsule.getAddress(), 0, privateKey); dbManager.pushBlock(new BlockCapsule(block)); //create transactions @@ -2428,25 +2427,17 @@ public void pushSameSkAndScanAndSpend() throws Exception { Thread.sleep(500); //package transaction to block - block = getSignedBlock(witnessCapsule.getAddress(), time + 3000, privateKey); + block = getSignedBlock(witnessCapsule.getAddress(), 0, privateKey); dbManager.pushBlock(new BlockCapsule(block)); BlockCapsule blockCapsule3 = new BlockCapsule(wallet.getNowBlock()); Assert.assertEquals("blocknum != 2", 2, blockCapsule3.getNum()); - block = getSignedBlock(witnessCapsule.getAddress(), time + 6000, privateKey); - dbManager.pushBlock(new BlockCapsule(block)); - // scan note by ivk byte[] receiverIvk = incomingViewingKey.getValue(); DecryptNotes notes1 = wallet.scanNoteByIvk(0, 100, receiverIvk); Assert.assertEquals(2, notes1.getNoteTxsCount()); - // scan note by ivk and mark - DecryptNotesMarked notes3 = wallet.scanAndMarkNoteByIvk(0, 100, receiverIvk, - fullViewingKey.getAk(), fullViewingKey.getNk()); - Assert.assertEquals(2, notes3.getNoteTxsCount()); - // scan note by ovk DecryptNotes notes2 = wallet.scanNoteByOvk(0, 100, senderOvk); Assert.assertEquals(2, notes2.getNoteTxsCount()); @@ -2462,7 +2453,6 @@ public void pushSameSkAndScanAndSpend() throws Exception { outPointBuild.setIndex(i); request.addOutPoints(outPointBuild.build()); } - request.setBlockNum(1); IncrementalMerkleVoucherInfo merkleVoucherInfo = wallet .getMerkleTreeVoucherInfo(request.build()); From 0230964bff5df0ccf6204bbd676d8b296977a7e3 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Tue, 22 Aug 2023 15:13:55 +0800 Subject: [PATCH 11/15] reset some commit --- .../org/tron/common/config/args/ArgsTest.java | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java index e3fc7a88a90..7ad8069db06 100644 --- a/framework/src/test/java/org/tron/common/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/common/config/args/ArgsTest.java @@ -1,9 +1,6 @@ package org.tron.common.config.args; -import com.beust.jcommander.JCommander; import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -14,13 +11,14 @@ import org.tron.core.config.args.Args; + public class ArgsTest { private static final String dbPath = "output_arg_test"; @Before public void init() { - Args.setParam(new String[] {"--output-directory", dbPath, "--p2p-disable", "true", + Args.setParam(new String[]{"--output-directory", dbPath, "--p2p-disable", "true", "--debug"}, Constant.TEST_CONF); } @@ -47,18 +45,4 @@ public void testConfig() { Assert.assertEquals(rateLimiter.getHttpMap().size(), 1); Assert.assertEquals(rateLimiter.getRpcMap().size(), 0); } - - @Test - public void testHelpMessage() { - JCommander jCommander = JCommander.newBuilder().addObject(Args.PARAMETER).build(); - Method method; - try { - method = Args.class.getDeclaredMethod("printVersion"); - method.setAccessible(true); - method.invoke(Args.class); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - Assert.fail(); - } - Args.printHelp(jCommander); - } } From f2bc55880598099d574439a85d80a2d3b52de727 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Thu, 24 Aug 2023 18:02:05 +0800 Subject: [PATCH 12/15] feat(net):delete unuseful code --- common/src/main/java/org/tron/core/Constant.java | 1 - 1 file changed, 1 deletion(-) diff --git a/common/src/main/java/org/tron/core/Constant.java b/common/src/main/java/org/tron/core/Constant.java index 03cb64cd18a..17a0b4f1d80 100644 --- a/common/src/main/java/org/tron/core/Constant.java +++ b/common/src/main/java/org/tron/core/Constant.java @@ -284,7 +284,6 @@ public class Constant { public static final String NODE_DISCOVERY_BIND_IP = "node.discovery.bind.ip"; public static final String NODE_DISCOVERY_EXTERNAL_IP = "node.discovery.external.ip"; - //public static final String AMAZONAWS_URL = "http://checkip.amazonaws.com"; public static final String NODE_BACKUP_PRIORITY = "node.backup.priority"; public static final String NODE_BACKUP_PORT = "node.backup.port"; From fbf2faee125b7c18d27a72270d26bbfa9c2220fd Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Fri, 25 Aug 2023 18:36:30 +0800 Subject: [PATCH 13/15] add test case testIpFromLibP2p --- .../org/tron/core/config/args/ArgsTest.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java index 143e10706aa..626b77b3077 100644 --- a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java @@ -16,8 +16,16 @@ package org.tron.core.config.args; import com.google.common.collect.Lists; +import com.typesafe.config.Config; +import com.typesafe.config.ConfigMergeable; +import com.typesafe.config.ConfigOrigin; +import com.typesafe.config.ConfigRenderOptions; +import com.typesafe.config.ConfigValue; +import com.typesafe.config.ConfigValueType; import io.grpc.internal.GrpcUtil; import io.grpc.netty.NettyServerBuilder; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; import lombok.extern.slf4j.Slf4j; import org.junit.After; @@ -28,7 +36,10 @@ import org.tron.common.utils.ByteArray; import org.tron.common.utils.LocalWitnesses; import org.tron.common.utils.PublicMethod; +import org.tron.common.utils.ReflectUtils; import org.tron.core.Constant; +import org.tron.core.config.Configuration; +import org.tron.core.net.peer.PeerManager; @Slf4j public class ArgsTest { @@ -44,7 +55,7 @@ public void destroy() { @Test public void get() { - Args.setParam(new String[]{"-w"}, Constant.TEST_CONF); + Args.setParam(new String[] {"-w"}, Constant.TEST_CONF); CommonParameter parameter = Args.getInstance(); @@ -55,7 +66,7 @@ public void get() { localWitnesses.initWitnessAccountAddress(true); Args.setLocalWitnesses(localWitnesses); address = ByteArray.toHexString(Args.getLocalWitnesses() - .getWitnessAccountAddress(CommonParameter.getInstance().isECKeyCryptoEngine())); + .getWitnessAccountAddress(CommonParameter.getInstance().isECKeyCryptoEngine())); Assert.assertEquals(0, parameter.getBackupPriority()); @@ -112,5 +123,29 @@ public void get() { ByteArray.toHexString(Args.getLocalWitnesses() .getWitnessAccountAddress(CommonParameter.getInstance().isECKeyCryptoEngine()))); } + + @Test + public void testIpFromLibP2p() + throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + Args.setParam(new String[] {"-w"}, Constant.TEST_CONF); + + Config config = Configuration.getByFileName(null, Constant.TEST_CONF); + Config config2 = config.withoutPath(Constant.NODE_DISCOVERY_BIND_IP); + Config config3 = config2.withoutPath(Constant.NODE_DISCOVERY_EXTERNAL_IP); + + CommonParameter.getInstance().setNodeDiscoveryBindIp(null); + CommonParameter.getInstance().setNodeExternalIp(null); + + Method method1 = Args.class.getDeclaredMethod("bindIp", Config.class); + method1.setAccessible(true); + method1.invoke(Args.class, config3); + + Method method2 = Args.class.getDeclaredMethod("externalIp", Config.class); + method2.setAccessible(true); + method2.invoke(Args.class, config3); + + Assert.assertNotEquals("127.0.0.1", CommonParameter.getInstance().getNodeDiscoveryBindIp()); + Assert.assertNotEquals("46.168.1.1", CommonParameter.getInstance().getNodeExternalIp()); + } } From e85b3aef4fbb10d9103b07422b5b525c28ee0344 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Fri, 25 Aug 2023 19:12:19 +0800 Subject: [PATCH 14/15] rollback test case of WalletTest --- framework/src/test/java/org/tron/core/WalletTest.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/framework/src/test/java/org/tron/core/WalletTest.java b/framework/src/test/java/org/tron/core/WalletTest.java index 94d799b881a..15b51f51edf 100644 --- a/framework/src/test/java/org/tron/core/WalletTest.java +++ b/framework/src/test/java/org/tron/core/WalletTest.java @@ -128,7 +128,6 @@ public class WalletTest extends BaseTest { private static Transaction transaction4; private static Transaction transaction5; private static AssetIssueCapsule Asset1; - private static AssetIssueCapsule Asset2; private static final String OWNER_ADDRESS; private static final String RECEIVER_ADDRESS; @@ -297,17 +296,9 @@ private static Block getBuildBlock(long timestamp, long num, long witnessId, private void buildAssetIssue() { AssetIssueContract.Builder builder = AssetIssueContract.newBuilder(); - builder.setOwnerAddress(ByteString.copyFromUtf8("Address1")); builder.setName(ByteString.copyFromUtf8("Asset1")); Asset1 = new AssetIssueCapsule(builder.build()); chainBaseManager.getAssetIssueStore().put(Asset1.createDbKey(), Asset1); - - AssetIssueContract.Builder builder2 = AssetIssueContract.newBuilder(); - builder2.setOwnerAddress(ByteString.copyFromUtf8("Address2")); - builder2.setName(ByteString.copyFromUtf8("Asset2")); - builder2.setId("id2"); - Asset2 = new AssetIssueCapsule(builder2.build()); - chainBaseManager.getAssetIssueV2Store().put(Asset2.getId().getBytes(), Asset2); } private void buildProposal() { From 560ba4c12425c1b39f1f61fbcb885f7a5104fbf2 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Wed, 30 Aug 2023 15:49:25 +0800 Subject: [PATCH 15/15] test(net): update test case ArgsTest --- .../test/java/org/tron/core/config/args/ArgsTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java index 626b77b3077..13e272d1e13 100644 --- a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java @@ -128,6 +128,12 @@ public void get() { public void testIpFromLibP2p() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Args.setParam(new String[] {"-w"}, Constant.TEST_CONF); + CommonParameter parameter = Args.getInstance(); + + String configuredBindIp = parameter.getNodeDiscoveryBindIp(); + String configuredExternalIp = parameter.getNodeExternalIp(); + Assert.assertEquals("127.0.0.1", configuredBindIp); + Assert.assertEquals("46.168.1.1", configuredExternalIp); Config config = Configuration.getByFileName(null, Constant.TEST_CONF); Config config2 = config.withoutPath(Constant.NODE_DISCOVERY_BIND_IP); @@ -144,8 +150,8 @@ public void testIpFromLibP2p() method2.setAccessible(true); method2.invoke(Args.class, config3); - Assert.assertNotEquals("127.0.0.1", CommonParameter.getInstance().getNodeDiscoveryBindIp()); - Assert.assertNotEquals("46.168.1.1", CommonParameter.getInstance().getNodeExternalIp()); + Assert.assertNotEquals(configuredBindIp, parameter.getNodeDiscoveryBindIp()); + Assert.assertNotEquals(configuredExternalIp, parameter.getNodeExternalIp()); } }