diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java index b5c3729bdb731d33310a1072129f9c84c8c3545d..6bf2ba01a290a7668d547fe0d2b704a157d63d43 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java @@ -22,6 +22,7 @@ package org.duniter.core.client.model.bma; * #L% */ +import org.duniter.core.client.model.exception.InvalidFormatException; import org.duniter.core.util.Preconditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -116,18 +117,14 @@ public final class BlockchainBlocks { final Map<Integer, List<String>> inputIssuers = getInputIssuers(tx); if (inputIssuers == null || inputIssuers.size() == 0) { - log.warn("Invalid block TX: no issuer found ! ", tx.toString()); + throw new InvalidFormatException("No issuer found in TX: " + tx.toString()); } return IntStream.range(0, tx.getInputs().length) .mapToObj(i -> { TxInput txInput = parseInput(tx.getInputs()[i]); if (txInput == null) { - log.warn(String.format("Invalid block TX: unable to parse inputs [%s]: %s", i, tx.getInputs()[i])); - txInput = new TxInput(); - txInput.amount = 0; - txInput.unitbase = 0; - txInput.type = "T"; + throw new InvalidFormatException("Unable to parse TX inputs: " + tx.getInputs()[i]); } txInput.issuers = inputIssuers.get(i); return txInput; @@ -172,10 +169,7 @@ public final class BlockchainBlocks { } } else { - log.warn("Invalid block TX: unable to parse output: " + output); - result = new TxOutput(); - result.amount=0; - result.unitbase=0; + throw new InvalidFormatException("Unable to parse TX output: " + output); } return result; } @@ -205,11 +199,10 @@ public final class BlockchainBlocks { return txOutputs.stream() .map(output -> { if (output == null) { - log.warn("There is null output here ;("); + throw new InvalidFormatException("TX outputs should not be null"); } return output; }) - .filter(Objects::nonNull) .map(output -> output.recipient) .filter(Objects::nonNull) .distinct().collect(Collectors.toSet()); diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/exception/InvalidFormatException.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/exception/InvalidFormatException.java new file mode 100644 index 0000000000000000000000000000000000000000..36ed8a7d685395dbed50f2ec859cbedaa4f39ba6 --- /dev/null +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/exception/InvalidFormatException.java @@ -0,0 +1,25 @@ +package org.duniter.core.client.model.exception; + +import org.duniter.core.exception.TechnicalException; + +/** + * Created by blavenie on 24/07/17. + */ +public class InvalidFormatException extends TechnicalException { + + public InvalidFormatException() { + super(); + } + + public InvalidFormatException(String message, Throwable cause) { + super(message, cause); + } + + public InvalidFormatException(String message) { + super(message); + } + + public InvalidFormatException(Throwable cause) { + super(cause); + } +} diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockFileUtils.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockFileUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..d4362a347aff44c80309f10baf92584b8bbc9bec --- /dev/null +++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockFileUtils.java @@ -0,0 +1,27 @@ +package org.duniter.core.client.model; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.duniter.core.client.model.bma.BlockchainBlock; +import org.junit.Assume; + +import java.io.File; +import java.nio.file.Files; + +/** + * Created by blavenie on 24/07/17. + */ +public class BlockFileUtils { + + public static BlockchainBlock readBlockFile(String jsonFileName) { + try { + ObjectMapper om = org.duniter.core.client.model.bma.jackson.JacksonUtils.newObjectMapper(); + BlockchainBlock block = om.readValue(Files.readAllBytes(new File("src/test/resources" , jsonFileName).toPath()), BlockchainBlock.class); + Assume.assumeNotNull(block); + return block; + } + catch(Exception e) { + Assume.assumeNoException(e); + return null; + } + } +} diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java index 5f98558e20a87f88d61a8976736e73a2e7e53e7c..069ecce166af424fd4138eb23f8bed9c97e0dcee 100644 --- a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java +++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java @@ -1,16 +1,14 @@ package org.duniter.core.client.model; -import com.fasterxml.jackson.databind.ObjectMapper; import org.duniter.core.client.model.bma.BlockchainBlock; -import org.duniter.core.client.model.bma.jackson.JacksonUtils; +import org.duniter.core.client.model.exception.InvalidFormatException; import org.duniter.core.client.model.local.Movement; import org.duniter.core.client.model.local.Movements; import org.junit.Assert; -import org.junit.Assume; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.io.File; -import java.nio.file.Files; import java.util.List; /** @@ -18,27 +16,31 @@ import java.util.List; */ public class MovementsTest { + + private static final Logger log = LoggerFactory.getLogger(MovementsTest.class); + @Test - public void testGetMovements() throws Exception { + public void getMovements() throws Exception { - final BlockchainBlock block = readBlockFile("block_with_tx.json"); + final BlockchainBlock block = BlockFileUtils.readBlockFile("block_with_tx.json"); List<Movement> mov = Movements.getMovements(block); Assert.assertTrue(mov.size() > 0); } - /* -- internal methods -- */ - private BlockchainBlock readBlockFile(String jsonFileName) { + + @Test + public void getMovements_issue19() { + + // This test should detect when TX.inputs format is invalid - see #19 + BlockchainBlock block = BlockFileUtils.readBlockFile("block_issue_19.json"); try { - ObjectMapper om = JacksonUtils.newObjectMapper(); - BlockchainBlock block = om.readValue(Files.readAllBytes(new File("src/test/resources" , jsonFileName).toPath()), BlockchainBlock.class); - Assume.assumeNotNull(block); - return block; - } - catch(Exception e) { - Assume.assumeNoException(e); - return null; + List<Movement> mov = Movements.getMovements(block); + Assert.fail("no exception"); + } catch(InvalidFormatException e) { + // OK + log.error(e.getMessage()); } - } + } } diff --git a/duniter4j-core-client/src/test/resources/block_issue_19.json b/duniter4j-core-client/src/test/resources/block_issue_19.json new file mode 100644 index 0000000000000000000000000000000000000000..ff250977411875ea076ee2ab658d0747ec19d3ce --- /dev/null +++ b/duniter4j-core-client/src/test/resources/block_issue_19.json @@ -0,0 +1,307 @@ +{ + "version": 10, + "nonce": 10200000015075, + "number": 37895, + "powMin": 82, + "time": 1500888872, + "medianTime": 1500884493, + "membersCount": 203, + "monetaryMass": 16509000, + "unitbase": 0, + "issuersCount": 21, + "issuersFrame": 106, + "issuersFrameVar": 0, + "currency": "g1", + "issuer": "FVUFRrk1K5TQGsY7PRLwqHgdHRoHrwb1hcucp4C2N5tD", + "signature": "SA9Rc+7DFIB5ykvf9tWUchZmSWZhe4ohY+/txrUn/K4OmtKz57cWY0cVKUy9bvid2ojg61tU408HoUJu0S7sAA==", + "hash": "00000A5899EEA5710D55CD004A091D9CA79A932BCEFBD492A631B84E58E15175", + "parameters": "", + "previousHash": "00000982E467FFAA71CD25EFB7B8F07A9457D1DC36D84FE7A344F77ACDEDD6AD", + "previousIssuer": "D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx", + "inner_hash": "BD363863B78317F26E148DD6600CABF166BDD43E3B0CDC4DE84423EF198E6A09", + "dividend": null, + "identities": [], + "joiners": [], + "actives": [], + "leavers": [], + "revoked": [], + "excluded": [], + "certifications": [], + "transactions": [ + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "[object Object]", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27396", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27673", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27944", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28240" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)" + ], + "outputs": [ + "5000:0:SIG(fyqm24NzN7D2Lr4ssrNMacsctymQ2NzBqH9YUYuxSmy)" + ], + "signatures": [ + "/OYzkDgCVNQEOyk2hCsPbyi7f48iOEOAHm+a7Rt+Xlxf8LTijxXlawzr3aSpHX9tMOS5P5O8zJmUmAf9V7qXAw==" + ], + "comment": "GANNONCE:CROWDF:762de1a1-aa9a-4fa2-88de-0bcd12811215", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28522", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28805", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29086", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29363", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29601", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29858", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30061", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30341" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)", + "5:SIG(0)", + "6:SIG(0)", + "7:SIG(0)" + ], + "outputs": [ + "7500:0:SIG(D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx)", + "500:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)" + ], + "signatures": [ + "lIo0PacXa9qpPGm7mbi4kt7YvxhKpLEedJPR46AtRouFa21tO1iEoKGAUH+5PXurivIicbTtdXc/XTE92JGaAA==" + ], + "comment": "Merci pour ton blog et ton super boulot sur g1 monit ainsi que l admin de MLO bien sur", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30637", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30885", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31175", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31471", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31750", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32008", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32298", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32514" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)", + "5:SIG(0)", + "6:SIG(0)", + "7:SIG(0)" + ], + "outputs": [ + "7500:0:SIG(2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ)", + "500:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)" + ], + "signatures": [ + "fF+w5kCgOk/iHx3K1nJUDl+wEq1o3azzs94ewa+ChTE5AA2kIQ6iI4fxuyG46nRyXQaraj873v23CoIg1v7RDw==" + ], + "comment": "Je n avais pas encore pris le temps de te remercier pour les dernieres avancees sur Duniter voila qui est fait hehe", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32769", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33060", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33326", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33562", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33839" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)" + ], + "outputs": [ + "5000:0:SIG(38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE)" + ], + "signatures": [ + "Xvk0SPpaTyaqZgM7dM9l4RdLnhIJ18qmWYJmf4rMj6ebd1Wak+MtG+pLXwr4MhKTDfFQo1yRD4RTbHeb3jhkDg==" + ], + "comment": "Merci pour les dernieres evolutions sur Cesium", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34100", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34348", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34628", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34913", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35187" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)" + ], + "outputs": [ + "5000:0:SIG(5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv)" + ], + "signatures": [ + "vyMb0wBQmXxJRoUzyEJjGjd/N/BiZvPcCZyEGeX21g8nYASR2nofSdoAlbqMErrOPc1EKXKv6VeDl6M37dAXAg==" + ], + "comment": "Merci pour les evolutions Sakia et notamment la version pour arch linux il faut que je joue avec maintenant", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35465", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35751", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36015", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36287", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36597" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)" + ], + "outputs": [ + "5000:0:SIG(8SJZia3RJ36hp3wXy8AJXJj8z7yeLHCVaTtv2xSi2MBj)" + ], + "signatures": [ + "ppaFML8WuhgayRG59eJt0BaGJ6NK0VYul2rnNUTiyX5Wp4D5HkljDF/EMW5fbM5zglyWJk5aK9M8nBy6IMlzAw==" + ], + "comment": "Merci pour ton super boulot chez MLO", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + }, + { + "version": 10, + "blockstamp": "37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA", + "locktime": 0, + "issuers": [ + "ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf" + ], + "inputs": [ + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36880", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37082", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37380", + "1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37630", + "1:0:T:C9FABBB2A4FD3C2E698CE054F85754C33DBFB9242156BCC2207F84349FAB61CC:13", + "1:0:T:CCFDD90667DD1722666036DE4C1ABA9BED348FB69FAA5F6EB5804DA37A886DA3:0", + "300:0:T:C1C7BBDE044D8E0C6BF06FBD433568FCD5088786CE09E7698A9A228A7A7DD346:1", + "10:0:T:CCECB5DD834BF4AA7BDD71CC1CAF9F73D9C11F0CAC082032111136C8362BB49C:19", + "30:0:T:C463403F954EAB3A9C30E34E2498170E2E25FD8F4EB721704815358B72839920:6", + "20:0:T:B78AD4F45DF8DCB7A7A949B09D90D244A3732920AA959B17D8777CD1A6EB735A:13", + "10:0:T:F15E94C2C04C7761FF26BE2AF3C61E83AD4721BA765D50D8036713A0FA1D3EFC:19", + "5:0:T:FA981CC2E872BE9F7957F918698DB6CE63741913E58816FF084C8FB42473E01F:14", + "5:0:T:C66071EE204FDFFE501FE3ECA581CE69FFF4DFF3C97D161E3AC2C26FDC897292:16", + "5:0:T:D29E91346E40F0EFB31C846A80EA021B45BC9616354188C5F9EFBD8D92CB3A3E:20", + "5:0:T:B044EFB575A8D9B03107B0E9211D4CADC653B9D2984374FD415DE671F20A0BA8:17", + "10:0:T:E03089AF40F95105CC6E1497DEAC51247345E05E3D6DA412711A5F9B18D472D0:0", + "15:0:T:BFC8766FD32B5410D1E698643D0C09479B7B8F9916391A2F326549AE2EB044A8:23", + "300:0:T:B27C710FC5D8C960F10E878EBFDE91EBD90760116FF66B59A902714C03BCE14C:0", + "500:0:T:EBDFD45D4CA5DE4C1935701653357727463407634135BDD7C56FEE68F845D312:0" + ], + "unlocks": [ + "0:SIG(0)", + "1:SIG(0)", + "2:SIG(0)", + "3:SIG(0)", + "4:SIG(0)", + "5:SIG(0)", + "6:SIG(0)", + "7:SIG(0)", + "8:SIG(0)", + "9:SIG(0)", + "10:SIG(0)", + "11:SIG(0)", + "12:SIG(0)", + "13:SIG(0)", + "14:SIG(0)", + "15:SIG(0)", + "16:SIG(0)", + "17:SIG(0)", + "18:SIG(0)" + ], + "outputs": [ + "5000:0:SIG(DymYJziyjC9pyupKNxT9iukEKrnFSGNCLnxFQtSWJSg5)", + "217:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)" + ], + "signatures": [ + "JaKH4ZXJYcLemrjbXaqOap5vplESk0dml0cUpA02VvruBTXH90tQS/BYCxTIr7qEdFrl7EeomcovBJflDmuvAA==" + ], + "comment": "Merci pour ton super boulot chez MLO", + "currency": "g1", + "block_number": 37895, + "time": 1500884493, + "blockstampTime": 0 + } + ], + "raw": "Version: 10\nType: Block\nCurrency: g1\nNumber: 37895\nPoWMin: 82\nTime: 1500888872\nMedianTime: 1500884493\nUnitBase: 0\nIssuer: FVUFRrk1K5TQGsY7PRLwqHgdHRoHrwb1hcucp4C2N5tD\nIssuersFrame: 106\nIssuersFrameVar: 0\nDifferentIssuersCount: 21\nPreviousHash: 00000982E467FFAA71CD25EFB7B8F07A9457D1DC36D84FE7A344F77ACDEDD6AD\nPreviousIssuer: D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx\nMembersCount: 203\nIdentities:\nJoiners:\nActives:\nLeavers:\nRevoked:\nExcluded:\nCertifications:\nTransactions:\nTX:10:1:5:5:1:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27109\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27396\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27673\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:27944\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28240\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5000:0:SIG(fyqm24NzN7D2Lr4ssrNMacsctymQ2NzBqH9YUYuxSmy)\nGANNONCE:CROWDF:762de1a1-aa9a-4fa2-88de-0bcd12811215\n/OYzkDgCVNQEOyk2hCsPbyi7f48iOEOAHm+a7Rt+Xlxf8LTijxXlawzr3aSpHX9tMOS5P5O8zJmUmAf9V7qXAw==\nTX:10:1:8:8:2:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28522\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:28805\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29086\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29363\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29601\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:29858\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30061\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30341\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5:SIG(0)\n6:SIG(0)\n7:SIG(0)\n7500:0:SIG(D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx)\n500:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)\nMerci pour ton blog et ton super boulot sur g1 monit ainsi que l admin de MLO bien sur\nlIo0PacXa9qpPGm7mbi4kt7YvxhKpLEedJPR46AtRouFa21tO1iEoKGAUH+5PXurivIicbTtdXc/XTE92JGaAA==\nTX:10:1:8:8:2:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30637\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:30885\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31175\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31471\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:31750\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32008\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32298\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32514\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5:SIG(0)\n6:SIG(0)\n7:SIG(0)\n7500:0:SIG(2ny7YAdmzReQxAayyJZsyVYwYhVyax2thKcGknmQy5nQ)\n500:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)\nJe n avais pas encore pris le temps de te remercier pour les dernieres avancees sur Duniter voila qui est fait hehe\nfF+w5kCgOk/iHx3K1nJUDl+wEq1o3azzs94ewa+ChTE5AA2kIQ6iI4fxuyG46nRyXQaraj873v23CoIg1v7RDw==\nTX:10:1:5:5:1:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:32769\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33060\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33326\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33562\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:33839\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5000:0:SIG(38MEAZN68Pz1DTvT3tqgxx4yQP6snJCQhPqEFxbDk4aE)\nMerci pour les dernieres evolutions sur Cesium\nXvk0SPpaTyaqZgM7dM9l4RdLnhIJ18qmWYJmf4rMj6ebd1Wak+MtG+pLXwr4MhKTDfFQo1yRD4RTbHeb3jhkDg==\nTX:10:1:5:5:1:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34100\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34348\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34628\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:34913\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35187\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5000:0:SIG(5cnvo5bmR8QbtyNVnkDXWq6n5My6oNLd1o6auJApGCsv)\nMerci pour les evolutions Sakia et notamment la version pour arch linux il faut que je joue avec maintenant\nvyMb0wBQmXxJRoUzyEJjGjd/N/BiZvPcCZyEGeX21g8nYASR2nofSdoAlbqMErrOPc1EKXKv6VeDl6M37dAXAg==\nTX:10:1:5:5:1:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35465\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:35751\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36015\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36287\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36597\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5000:0:SIG(8SJZia3RJ36hp3wXy8AJXJj8z7yeLHCVaTtv2xSi2MBj)\nMerci pour ton super boulot chez MLO\nppaFML8WuhgayRG59eJt0BaGJ6NK0VYul2rnNUTiyX5Wp4D5HkljDF/EMW5fbM5zglyWJk5aK9M8nBy6IMlzAw==\nTX:10:1:19:19:2:1:0\n37893-0000047EA6FF33E92CFF4C66A831E955D77AE5699DCEA81800BF0B2E3F9A64BA\nArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:36880\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37082\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37380\n1000:0:D:ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf:37630\n1:0:T:C9FABBB2A4FD3C2E698CE054F85754C33DBFB9242156BCC2207F84349FAB61CC:13\n1:0:T:CCFDD90667DD1722666036DE4C1ABA9BED348FB69FAA5F6EB5804DA37A886DA3:0\n300:0:T:C1C7BBDE044D8E0C6BF06FBD433568FCD5088786CE09E7698A9A228A7A7DD346:1\n10:0:T:CCECB5DD834BF4AA7BDD71CC1CAF9F73D9C11F0CAC082032111136C8362BB49C:19\n30:0:T:C463403F954EAB3A9C30E34E2498170E2E25FD8F4EB721704815358B72839920:6\n20:0:T:B78AD4F45DF8DCB7A7A949B09D90D244A3732920AA959B17D8777CD1A6EB735A:13\n10:0:T:F15E94C2C04C7761FF26BE2AF3C61E83AD4721BA765D50D8036713A0FA1D3EFC:19\n5:0:T:FA981CC2E872BE9F7957F918698DB6CE63741913E58816FF084C8FB42473E01F:14\n5:0:T:C66071EE204FDFFE501FE3ECA581CE69FFF4DFF3C97D161E3AC2C26FDC897292:16\n5:0:T:D29E91346E40F0EFB31C846A80EA021B45BC9616354188C5F9EFBD8D92CB3A3E:20\n5:0:T:B044EFB575A8D9B03107B0E9211D4CADC653B9D2984374FD415DE671F20A0BA8:17\n10:0:T:E03089AF40F95105CC6E1497DEAC51247345E05E3D6DA412711A5F9B18D472D0:0\n15:0:T:BFC8766FD32B5410D1E698643D0C09479B7B8F9916391A2F326549AE2EB044A8:23\n300:0:T:B27C710FC5D8C960F10E878EBFDE91EBD90760116FF66B59A902714C03BCE14C:0\n500:0:T:EBDFD45D4CA5DE4C1935701653357727463407634135BDD7C56FEE68F845D312:0\n0:SIG(0)\n1:SIG(0)\n2:SIG(0)\n3:SIG(0)\n4:SIG(0)\n5:SIG(0)\n6:SIG(0)\n7:SIG(0)\n8:SIG(0)\n9:SIG(0)\n10:SIG(0)\n11:SIG(0)\n12:SIG(0)\n13:SIG(0)\n14:SIG(0)\n15:SIG(0)\n16:SIG(0)\n17:SIG(0)\n18:SIG(0)\n5000:0:SIG(DymYJziyjC9pyupKNxT9iukEKrnFSGNCLnxFQtSWJSg5)\n217:0:SIG(ArcfiCb3FWBonodGtiznCdBdCH5EJTLUdAFHR4nRM4zf)\nMerci pour ton super boulot chez MLO\nJaKH4ZXJYcLemrjbXaqOap5vplESk0dml0cUpA02VvruBTXH90tQS/BYCxTIr7qEdFrl7EeomcovBJflDmuvAA==\nInnerHash: BD363863B78317F26E148DD6600CABF166BDD43E3B0CDC4DE84423EF198E6A09\nNonce: 10200000015075\n" +} \ No newline at end of file diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java index 8efd2166c5d60d55cd956bb4fac8d136e44cf888..5be04843d53b8dc056a84acd378bb943f8275c0e 100644 --- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java +++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/service/BlockchainService.java @@ -326,7 +326,13 @@ public class BlockchainService extends AbstractService { } } - // Preparing indexBlocksFromNode + // Workaround for https://github.com/duniter/duniter/issues/1042 + if (json.contains("[object Object]")) { + // Getting block using GET request '/blochain/block' + json = blockchainRemoteService.getBlockAsJson(peer, number); + } + + // Index new block blockDao.create(currencyName, getBlockId(number), json.getBytes(), wait); // Update current