Skip to content

Commit

Permalink
tests(coinjoin): update coinjoin transaction type tests
Browse files Browse the repository at this point in the history
  • Loading branch information
HashEngineering committed Jan 4, 2024
1 parent 7e6878e commit c1ea90d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.bitcoinj.wallet.UnreadableWalletException;
import org.bitcoinj.wallet.Wallet;
import org.bitcoinj.wallet.WalletProtobufSerializer;
import org.junit.Ignore;
import org.junit.Test;

import java.io.IOException;
Expand All @@ -59,47 +60,20 @@ public void setUp() throws Exception {
Context.get().initDash(false, true);
}

@Test
public void checkTransactionTypes() {
byte[] createDenominationsTxData = Utils.HEX.decode("0100000001bd2138442a386a16426e75670730078cd4bd15fa4e44eb81355cf42b9c66eba1010000006b483045022100e77a985147de0ae264549b5ed897fd5cc740179b377988490f2a153bc2014e5f02203bf0a8e1d62a6800d9394882553a994b13ab9d56e386115db082bc62f6fb0e66012103ca7d07d7e296ad5444a1f5c96a9b94a8b0da7b6af5219ca9ee5e4bec17657e2bffffffff0e409c0000000000001976a9143f9462dced1f02e8708d698ffa0ce1a1a002f48788ac4a420f00000000001976a9141c4158d25bbfb00b14d4dd08e31b64c8cbc8198d88ac4a420f00000000001976a9143b1c66465fe1954ea5705baa33de838b60aac7ea88ac4a420f00000000001976a914499343bf7fb7cea2dc86e7e26d60ac3ef1fe2f5f88ac4a420f00000000001976a91461f7470fd05bdf7eb4d0a06ec6445d860916a49188ac4a420f00000000001976a914798a39f51e62d77fb0148c5bdefc637e3a0cfeb088ac4a420f00000000001976a9147eb367581d8e4faac93d917a8b17ff2b79a1915588ac4a420f00000000001976a91481fc73812f9c21709a70a24b33814d1ffcc652bb88ac4a420f00000000001976a91494ee9dbe2af140aea7f99722658f5133fe3b3d4388ac4a420f00000000001976a914a39a42322d2fcda3239bf5fa0cd918a6247b60ab88ac4a420f00000000001976a914bf671c23d4c5b58251390417d6c6f79be96f44f288ac4a420f00000000001976a914d11513265899e0df170b0fac32d89b707a5325d888ace4969800000000001976a914a1f8a8550378cd2ed1143b145c113e6ca6a1442888ac54802603000000001976a91421c92f3a2772b7d455cfa65f48f17c7347335b3788ac00000000");
byte[] makeCollateralInputTxData = Utils.HEX.decode("010000000109e5eeba5c3cdb050424a7c813fa5975197443218cbf5b74ad332778ced652910d0000006a4730440220280cced3cccdd372f1b8a47c1b68bd363c83a6ef9ce9222691e2a167e21852db022027c93282adc2f4c568c41a8b7c66e8030caa91956e2e5ca720689e7afe5f710b0121032919de1d010972627e72b60c252373899f8f4de9b8a4c02363ec80fce921705dffffffff02409c0000000000001976a914919a41b8a9260897649a069602a0f8e59cd09b1a88ac09e32503000000001976a914ea62500b49fc443781649b32540a4ba31a6275cd88ac00000000");
//TODO: byte[] mixingFeeTxData = Utils.HEX.decode("");
byte[] mixingTxData = Utils.HEX.decode("0200000004f036881ac5af98fcfe039df302a6452d88dc3899a24e468b46181e8f966304340b0000006a473044022071f3cb334ee6d9fe7678f7fccb80bf24b25d5dd7bcefe0880f833ed7aa0f96af022063a397190c4c52e44f3e4a7fb27ed1c83db93d9fcb93a04f90d878997ce769a10121029a714f556b95d12e341a29175488bffc9796d46d993bcd14c3512473d87056feffffffff56ddc1a0989b90e39376437588f943936b2fcf5520e3ada75038d4a01c20c935040000006a473044022032cd761f747cb3f86e663421b8b514d050f1aeed4cec3ec53ad9249ef11520d90220277d2ad0c773bf0f6681a5d81c9421d2cf3cf9ebe1f37d08ed241951d9372dde8121038c072422ee104ebe1ef5b15bf788eca5dd3e04b64a8b54a3ee3a3a33cb1ee624ffffffff28e34085dd16a4b9fe8d574b39112a12ebaff745a7b3b541a92b89470e153a6c090000006b483045022100aefe1d513d4f6b325e21212254697bcb7d406b736e55f00735904d77330ffb7a0220771a4ac49cdc233958d911efaa35247ce2449b25d9470d1ae64402a98c5d8f3e012103ad4812a7f15f091b99380c4ee050c55c4f35e10c72b3e5d704d1518f4830b0a7ffffffffde7e6e7dbc28893928a02ba09d1b1c22f030f85ade92bff5e6d7ec244d9cbaca010000006a47304402204f7bca7d6db9d812ee1bcd16cfdeb668b419d5482a5aa3eb365291c173dc663b022003a5eb3abae364d0960fa4d89c3a970cf18e68fc902e5078e61eb0c322012fd1812103365227ae4c7bf8d999dbaa2c791c603b6d453eb993bd974dd87d66fc8c7567e7ffffffff044a420f00000000001976a9143efc5afdd6963497b9cf80305ae486a58cffce4b88ac4a420f00000000001976a914a7bb883784ba08918649e5f23a390e9c3c11b39788ac4a420f00000000001976a914eda2d3a2c0f4652af6413789175b26f6fb1f37dc88ac4a420f00000000001976a914fe19df042e254ea62fb829cd5d1995d417078edb88ac00000000");
byte[] sendTxData = Utils.HEX.decode("01000000061176dbc53bc5f1dc55fc5d697e2b8ef07aaa88036ad654ff79061f7e5f0acc14010000006b483045022100be542067ad08e14bfb7d94cc097e04a673248551fee40044b6936f7c6721046602206f306bc548d60de1e1fabe0caa69fffe07fac09befb2a9fdf412c51093ea688c012103784d38b68ece0546780d1553c6158d46e895e38d84917448d2b5d511c4842b4effffffff1176dbc53bc5f1dc55fc5d697e2b8ef07aaa88036ad654ff79061f7e5f0acc14040000006b483045022100a0772973415cf5eb70c1cb1131b11e696298c655ef32cfe746e5efc8c792244302206d2a64cd80a2fec40d5f40017fa03d1e627fce06f58e885094fc9139e63ef6cb012103731f49d8cc8e38a1f8a69c9462dedc62f8e5ec0f36594617b5791e9c4426ca41ffffffff9e8ea76dac00a20e7e6725c4078f43a51ab35b24f3d596f5fc33d0b9ec90eb1a000000006a473044022032661d4b9a2023d1a612586392ebef723f6bca7697a541b1c5ced4f86ed85b29022062170576629de763e495dcff20e6c3a9974205d809550dae7122e496e85d3c20012103394cbb1b520acbbab2ec5eb74c291694b19e977353650e37ac610a3e692d4ed6ffffffff9bdf88b07dba9492e7c85923f99c95d391259291ff3a30118f1edc254bfd712a020000006a473044022061cd29ea0948c9d156ad3da29dec140efea5c83522e3121a1c56ba5cee7c53b102205eee0dc766294f9b15f966b73c292ea0707935a430909223a550a4023b6af1300121036ff8aa1c5f4ae21ef3d81bc457574055844fafbffa082f18d4524c059ada525dffffffff7f0f5095b9dbdea6fcf43edf550802bad9bd0f1abdfbce0f779cc0973806b65b010000006b483045022100bdf677832e4f1800d68b9ba3090206c1a982688862191d29e588cc8c4f629c96022036f0547df2be498b8fa260e5358abd5d89f922e9e0477f819b085ba72536f0e8012102d149efa572c3b2c4fdbcdbab0b3c61df4001006c1028a0eba56ed318917cbd2bffffffff96a62423f5703f38f59000f1dbf19427f8a03d8c5f39b8a9b01543637a4bf2f2010000006b483045022100831c7104363a5b6d158aef3f89c9bbb708977c59a2f7d66271b20f45f50a6d510220234ab4daac7e8311a1a8bdf73b94e1a0423ae61692dd1df7f713d3a5d70328b8012102edaf7840fbd522ed32ff80de658c9bb05b5ebec9c3036866b8f7fff04f0c91f6ffffffff01afdee40000000000166a1414f4512d0ea2fb0917f7a7c85b364d5518fca8d400000000");
byte[] regularTxData = Utils.HEX.decode("020000000d0ee43cfcf0f2fda2916bd3551801088cb44cc381dd15daf5c875e30b85cad005000000006a47304402207c1f051b44942981980b68757a56d7253362b4205f43b5091ac7e3f50d7853d8022033ede84452e56083adc334d561ab2b484503497debf424581051eb7abd03fd3c0121023823b5833a122f79feea14501b7111fe5de177af316db635ee041eb89b2e73bffeffffff5cfa8a269078de05a5779c18dc546ad2f2d6bc9b301b79988117adb33824f42a010000006a47304402206287ef4399b8ad60c666e90457a6f5b04f8e82f21d6d79620119759e61a4fdff0220264d155cdf21eeb46233b52d7e4f66a317a31c0a61105559f5f33cb000a1758f012102d082925f5b976ef0a64555f3aaae99db54e4b5d4cc04e79e4f180e09e82b21a4feffffffa47eee67928f0d9626d3b057b7b3bcab81f2cc17ae1ae49c779d842f7379c945050000006a47304402201a0718fd6fe9c637aded3ddee368cd35d156ae9b48b91a27450176905e0c72c202202b9dde0be1eafc803776aae7ab8c841cd6f906c2f8624e8ffbf82fff20edff5f0121033521678f95d293ecc6b526acdd9e18c170293e42d04774afd222c966ebb96533feffffff7ff2cd93d4e1058aa0538788d408682825ea1fa74722a544e9517a448a4b2f49020000006a473044022069b831a0b6786ab799c27d85de9ec260afcb9e0c025f3390abf3067ce863e1ff022079fbb78f688fd2256de3ba9203ef8a9fab3ccae239cece0ca2246055851d6e1e0121025a21f1d0c77f5f0713934abed148aeb7b58f07d75eafdc221f4e411e489f8392feffffff25fe7afcb7b14e099ffb3176707efc1535a4c933f004ce261ac8502d9f0a174c0f0000006a4730440220298ba7a032ad099ff6e7ae5cf5ee61d6ad097cfcd791c552a512901c60ef360a02204d6749e58e07026dc51f2b9bc2e7eff3d419446b0c003b673a96ad6004394e64012103b1f0bb40388ffb9a5e10edd2ed0b58e44040f648944ea943123e76392ad2047efeffffff02befaa4dc5a8734c933ce1152c49316ad673e7357155331533869b02866ca73000000006a473044022017c941e0e21d2ab490781e9166a7ae1de8b523f3a3d03d16b2b9bf775ce3976f0220513346f4af5b85ca8f3d6e0d1a904064145557da6ced7232a58f903a55f922dc0121035e488bdf0b201c7ffac19edf9fcd185056710b2d45b33618c8ce4d34dc112a38feffffff5c6f0b99193be7c98fb2dd5bd44d06634045419a112606ae45f9a5a5aef25b75010000006a47304402200952e7558943d53ea65e5630a5a2943c34df75b3fe30a1ec1f37c5cb2f843bcb02204d2ee3b18e9bebf09786b2572f75c96d9785bee3220d4307574abff0bb3f9ad6012103a1fa375d6d9fc7011d0f169370ecbade9c66196535290c3ebeeec5c8db0f535dfeffffff123eda73018ffdc234e8d63bf1610feeb14165389ae5abc629c4f5e7fe82357d010000006a47304402205ecdbb67b9246c811658bcb726649acff518d1a914cb2ca544ca810718536c19022079e0a3a6dcec6708f881c7b36dbb94e5855420727d69ed8921908b3d17f25f380121022364f06602bfd76e44c9a1170990bc4f1e1baad50f5af2273d4c8af8dc955f40feffffff5f9173f7cf4b9f9f93d9d6b3c34b45d67c9e001b55b3093d2ce8fd2052ad8cae020000006a47304402204ccbaa867fbf7a2833d2688e24438a1a72c7a89398f561280b81195084a2a56402202072f026f3916b01a24e789c5536304c19968314f8eda18525fb54b60b36fcd0012102eb8b0b6b86c3499462b350060515fb436ddb75d8b00a6d01d1db38d087845664feffffffdab2947c790b95a91a01fbac0e9df6d59434efe1872f6b9a7db3309b83820fb1020000006a4730440220489e95c90bd5d5e5c389a8f7aea143a4b73dfbbd35cd88c7fe163db6ea30810e022039bfa0a294a9b243df29c5418af966e19644436607f1d5afdebc993140d975990121039d854260d4db4130b8fee17e1c0f9cc1e56a33db0b8fa62cb920b10f4bf98150feffffff63c79a064dafb857ca4965a455be7f5a8092fbabcda59eddbe1688b40eff97b9040000006a4730440220223c26be640c63e336b083c0b69e2524994e42d7496229a8d16c412ec5190c1a02206e889ea273cab76f2425ef001cce59ce2c5a88617b36d79fcafb955e874dfc680121023b986a6dc2a97d11ebcd59a2c2c3fae708bf2a5ff7c0acb6982b3e87886778a3feffffff6a9a3e599c5ca7d7d6e4c8c5f7113fc6258429f0c43cd8d8d2b6773fe5aaccc5030000006a4730440220020f1a5f26ed0aee848f8a0d93d5c055dbf150666ce6d76b6d8755b836277cfd02204f5120a3791e2c62834454fd9500fa147edff8196139cec583d7996683bb6ac50121028ad574f4e78418f7ffebad05eb9f7580b47256b5f3e1d98148c249e9ab1944ddfeffffff95e2f11eae6fbeab15bb0c093a3acfb6522eced0e7e16a085bc610695f7ffff8030000006a473044022030a65faceeb70a952aae7ad1974521d73a0cd3ae70c008a38aa857f7d9d0b5eb022074e00dddd3b04936cb44e4ffe302267ce470d6a171a1705d11f2fb237f641f3a012103e9893335b735fe3f9c0a2c39b6ab82b9155203a6dcad7982f0f85e8ab29c2dfffeffffff0201440f00000000001976a914c2c89db9a71f48738476fbd70412aee6b8db70b288ac218f6704000000001976a9145f9f6f35d3c8eac8016c75b5d0568e849b8b5c9a88acdeaf0d00");
byte[] mixingFeeTxTwoData = Utils.HEX.decode("01000000013c73f4ca060ae612c3925c06f50b83e04c8a10bc76159af9a8253125f3948d7f000000006a47304402207cc6ce15700973ee85c2d9169fb4ddecc685d0a2e7113a37bb1261ac960c311e02207d937186073d6c781353a4cb3be0fbb1c7c830792709eddde2da11cc568013d6012102380e7781fa5324b280319ad3db86bb8640305a52c1f77e8122de946f9933ba8dffffffff010000000000000000016a00000000");

Transaction createDenominationsTx = new Transaction(UNITTEST, createDenominationsTxData, 0);
Transaction makeCollateralInputTx = new Transaction(UNITTEST, makeCollateralInputTxData, 0);
// TODO: Transaction mixingFeeTx = new Transaction(UNITTEST, mixingFeeTxData, 0);
Transaction mixingTx = new Transaction(UNITTEST, mixingTxData, 0);
Transaction sendTx = new Transaction(UNITTEST, sendTxData, 0);
Transaction regularTx = new Transaction(UNITTEST, regularTxData, 0);
Transaction mixingFeeTxTwo = new Transaction(UNITTEST, mixingFeeTxTwoData, 0);

assertEquals(CoinJoinTransactionType.CreateDenomination, CoinJoinTransactionType.fromTx(createDenominationsTx, wallet));
assertEquals(CoinJoinTransactionType.MakeCollateralInputs, CoinJoinTransactionType.fromTx(makeCollateralInputTx, wallet));
// TODO: assertEquals(CoinJoinTransactionType.MixingFee, CoinJoinTransactionType.fromTx(mixingFeeTx, wallet));
assertEquals(CoinJoinTransactionType.Mixing, CoinJoinTransactionType.fromTx(mixingTx, wallet));
// TODO: assertEquals(CoinJoinTransactionType.Send, CoinJoinTransactionType.fromTx(sendTx, wallet));
// TODO: assertEquals(CoinJoinTransactionType.None, CoinJoinTransactionType.fromTx(regularTx, wallet));
//assertEquals(true, CoinJoinTransactionType.isMixingFee(mixingFeeTxTwo));
}

@Test
public void checkTransactionTypesInWallet() throws IOException {
Context context = new Context(TestNet3Params.get());
try (InputStream inputStream = getClass().getResourceAsStream("wallet-protobuf-testnet.wallet")) {

Wallet wallet = new WalletProtobufSerializer().readWallet(inputStream);

Transaction mixingTx = wallet.getTransaction(Sha256Hash.wrap("eaef7c3debe82bd593b129faff41f75133d38ce0129c22abcb25a6407a73a5bb"));
Transaction createDenominationsTx = wallet.getTransaction(Sha256Hash.wrap("27757f613ea98d10da99042704ed5884475e1be57a6647aafb7de3e318bf8d1d"));
Transaction makeCollateralInputTx = wallet.getTransaction(Sha256Hash.wrap("a2db76489264e0f1cbe8d08730647a614cb03080bb40561b0eb43ce742233508"));
Transaction mixingFeeTx = wallet.getTransaction(Sha256Hash.wrap("b0cb55ea43ee180958639408a7a0f283d43e82a442520f71347f17e52e2c0b87"));
Transaction mixingFeeTwoTx = wallet.getTransaction(Sha256Hash.wrap("3f520d70e77496a718ca3efb5ff13e73b299327009489c77163cc70276a3a58e"));
Transaction mixingFeeThreeTx = wallet.getTransaction(Sha256Hash.wrap("fa26757bb2ec1f60293dacf2f60ae79e472aa194670d23eb6373b7c4b9fc633b"));
Transaction regularTx = wallet.getTransaction(Sha256Hash.wrap("2925a1c2d0e4bfe4f2b9e46dc1c5586063df4c4a4504125f5d227bbe6ac824d0"));
Transaction mixingTx = wallet.getTransaction(Sha256Hash.wrap("430fffe6a76208db7581ff4065cb03447a6f38593bbb1dad6bcf7771ba7b744f"));
Transaction createDenominationsTx = wallet.getTransaction(Sha256Hash.wrap("434f27ce781d350b581432631437c7959311495a8432bcbc55e825525057a4b1"));
Transaction makeCollateralInputTx = wallet.getTransaction(Sha256Hash.wrap("6ada49e404897e884fa199e018e8ab29fa488634dac0170e24fe4888ce8264c8"));
Transaction mixingFeeTx = wallet.getTransaction(Sha256Hash.wrap("0de347863bcd394246dff4409787a1068d91dab685b054dca77d7a9959b2b282"));
Transaction mixingFeeTwoTx = wallet.getTransaction(Sha256Hash.wrap("2cffea126788f2b3d53592a62d1fc24705372f4d10979885210b3aec3102b014"));
Transaction mixingFeeThreeTx = wallet.getTransaction(Sha256Hash.wrap("2294c7d23721717d1e04fdd9576273e492090f81554fd3f2f90955d7d5561738"));
Transaction regularTx = wallet.getTransaction(Sha256Hash.wrap("f39ab7fc1d961a39ff96ee17f01bae75a3859102acf0dc6f40558f360f696130"));


assertEquals(CoinJoinTransactionType.CreateDenomination, CoinJoinTransactionType.fromTx(createDenominationsTx, wallet));
Expand Down
Binary file not shown.

0 comments on commit c1ea90d

Please sign in to comment.