Skip to content
This repository has been archived by the owner on Aug 23, 2020. It is now read-only.

Commit

Permalink
Merge branch 'pr/399' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
paulhandy committed Dec 18, 2017
2 parents fb58c1b + 8ff0577 commit 501e949
Show file tree
Hide file tree
Showing 47 changed files with 935 additions and 493 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ RUN mvn clean package

FROM openjdk:jre-slim
WORKDIR /iri
COPY --from=builder /iri/target/iri-1.4.1.2.jar iri.jar
COPY --from=builder /iri/target/iri-1.4.1.4.jar iri.jar
COPY logback.xml /iri
VOLUME /iri

Expand Down
6 changes: 6 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
1.4.1.4
- Improved memory allocation
- add checkConsistency API call for transaction promotion
- Upgrade to BouncyCastle 1.58
- limit inflow of new transactions from single neighbor/user

1.4.1.2
- Fixes DB over-storing transactions due to concurrency
- Upgrade to RocksDB 5.7.3
Expand Down
4 changes: 2 additions & 2 deletions dependency-reduced-pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>com.iota</groupId>
<artifactId>iri</artifactId>
<name>IRI</name>
<version>1.4.1.2</version>
<version>1.4.1.4</version>
<description>IOTA Reference Implementation</description>
<scm>
<connection>scm:git:git://github.com/iotaledger/iri.git</connection>
Expand Down Expand Up @@ -83,7 +83,7 @@
<urn>com.jayway.jsonpath:json-path:2.2.0:jar:null:test:22290d17944bd239fabf5ac69005a60a7ecbbbcb</urn>
<urn>junit:junit:4.12:jar:null:test:2973d150c0dc1fefe998f834810d68f278ea58ec</urn>
<urn>org.ini4j:ini4j:0.5.4:jar:null:compile:4a3ee4146a90c619b20977d65951825f5675b560</urn>
<urn>org.bouncycastle:bcprov-jdk15on:1.57:jar:null:compile:f66a135611d42c992e5745788c3f94eb06464537</urn>
<urn>org.bouncycastle:bcprov-jdk15on:1.58:jar:null:compile:2c9aa1c4e3372b447ba5daabade4adf2a2264b12</urn>
<urn>uk.co.froot.maven.enforcer:digest-enforcer-rules:0.0.1:jar:null:runtime:16a9e04f3fe4bb143c42782d07d5faf65b32106f</urn>
</urns>
</digestRule>
Expand Down
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>com.iota</groupId>
<artifactId>iri</artifactId>
<version>1.4.1.2</version>
<version>1.4.1.4</version>

<name>IRI</name>
<description>IOTA Reference Implementation</description>
Expand Down Expand Up @@ -41,7 +41,7 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.57</version>
<version>1.58</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
Expand Down Expand Up @@ -246,7 +246,7 @@
<urn>com.jayway.jsonpath:json-path:2.2.0:jar:null:test:22290d17944bd239fabf5ac69005a60a7ecbbbcb</urn>
<urn>junit:junit:4.12:jar:null:test:2973d150c0dc1fefe998f834810d68f278ea58ec</urn>
<urn>org.ini4j:ini4j:0.5.4:jar:null:compile:4a3ee4146a90c619b20977d65951825f5675b560</urn>
<urn>org.bouncycastle:bcprov-jdk15on:1.57:jar:null:compile:f66a135611d42c992e5745788c3f94eb06464537</urn>
<urn>org.bouncycastle:bcprov-jdk15on:1.58:jar:null:compile:2c9aa1c4e3372b447ba5daabade4adf2a2264b12</urn>
<!-- A check for the rules themselves -->
<urn>uk.co.froot.maven.enforcer:digest-enforcer-rules:0.0.1:jar:null:runtime:16a9e04f3fe4bb143c42782d07d5faf65b32106f</urn>
</urns>
Expand Down
29 changes: 16 additions & 13 deletions src/main/java/com/iota/iri/BundleValidator.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.iota.iri;

import com.iota.iri.controllers.BundleViewModel;
import com.iota.iri.hash.Curl;
import com.iota.iri.hash.ISS;
import com.iota.iri.hash.Sponge;
import com.iota.iri.hash.SpongeFactory;
import com.iota.iri.hash.*;
import com.iota.iri.model.Hash;
import com.iota.iri.controllers.TransactionViewModel;
import com.iota.iri.storage.Tangle;
Expand Down Expand Up @@ -33,6 +30,8 @@ public static List<List<TransactionViewModel>> validate(Tangle tangle, Hash hash

final int[] addressTrits = new int[TransactionViewModel.ADDRESS_TRINARY_SIZE];
final int[] bundleHashTrits = new int[TransactionViewModel.BUNDLE_TRINARY_SIZE];
final int[] normalizedBundle = new int[Curl.HASH_LENGTH / ISS.TRYTE_WIDTH];
final int[] digestTrits = new int[Curl.HASH_LENGTH];

MAIN_LOOP:
while (true) {
Expand Down Expand Up @@ -65,29 +64,33 @@ public static List<List<TransactionViewModel>> validate(Tangle tangle, Hash hash
curlInstance.absorb(transactionViewModel2.trits(), TransactionViewModel.ESSENCE_TRINARY_OFFSET, TransactionViewModel.ESSENCE_TRINARY_SIZE);
}
curlInstance.squeeze(bundleHashTrits, 0, bundleHashTrits.length);
if (instanceTransactionViewModels.get(0).getBundleHash().equals(new Hash(Converter.bytes(bundleHashTrits, 0, TransactionViewModel.BUNDLE_TRINARY_SIZE)))) {
if (Arrays.equals(instanceTransactionViewModels.get(0).getBundleHash().trits(), bundleHashTrits)) {

final int[] normalizedBundle = ISS.normalizedBundle(bundleHashTrits);
ISSInPlace.normalizedBundle(bundleHashTrits, normalizedBundle);

for (int j = 0; j < instanceTransactionViewModels.size(); ) {

transactionViewModel = instanceTransactionViewModels.get(j);
if (transactionViewModel.value() < 0) { // let's recreate the address of the transactionViewModel.
addressInstance.reset();
int offset = 0;
int offset = 0, offsetNext = 0;
do {
addressInstance.absorb(
ISS.digest(SpongeFactory.Mode.KERL, Arrays.copyOfRange(normalizedBundle, offset % (Curl.HASH_LENGTH / Converter.NUMBER_OF_TRITS_IN_A_TRYTE), offset = (offset + ISS.NUMBER_OF_FRAGMENT_CHUNKS - 1) % (Curl.HASH_LENGTH / Converter.NUMBER_OF_TRITS_IN_A_TRYTE) + 1),
Arrays.copyOfRange(instanceTransactionViewModels.get(j).trits(), TransactionViewModel.SIGNATURE_MESSAGE_FRAGMENT_TRINARY_OFFSET,
TransactionViewModel.SIGNATURE_MESSAGE_FRAGMENT_TRINARY_OFFSET + TransactionViewModel.SIGNATURE_MESSAGE_FRAGMENT_TRINARY_SIZE)),
0, Curl.HASH_LENGTH);
offsetNext = (offset + ISS.NUMBER_OF_FRAGMENT_CHUNKS - 1) % (Curl.HASH_LENGTH / Converter.NUMBER_OF_TRITS_IN_A_TRYTE) + 1;
ISSInPlace.digest(SpongeFactory.Mode.KERL,
normalizedBundle,
offset % (Curl.HASH_LENGTH / Converter.NUMBER_OF_TRITS_IN_A_TRYTE),
instanceTransactionViewModels.get(j).trits(),
TransactionViewModel.SIGNATURE_MESSAGE_FRAGMENT_TRINARY_OFFSET,
digestTrits);
addressInstance.absorb(digestTrits,0, Curl.HASH_LENGTH);
offset = offsetNext;
} while (++j < instanceTransactionViewModels.size()
&& instanceTransactionViewModels.get(j).getAddressHash().equals(transactionViewModel.getAddressHash())
&& instanceTransactionViewModels.get(j).value() == 0);

addressInstance.squeeze(addressTrits, 0, addressTrits.length);
//if (!Arrays.equals(Converter.bytes(addressTrits, 0, TransactionViewModel.ADDRESS_TRINARY_SIZE), transactionViewModel.getAddress().getHash().bytes())) {
if (! transactionViewModel.getAddressHash().equals(new Hash(Converter.bytes(addressTrits, 0, TransactionViewModel.ADDRESS_TRINARY_SIZE)))) {
if (! Arrays.equals(transactionViewModel.getAddressHash().trits(), addressTrits)) {
instanceTransactionViewModels.get(0).setValidity(tangle, -1);
break MAIN_LOOP;
}
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/com/iota/iri/IRI.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class IRI {

public static final String MAINNET_NAME = "IRI";
public static final String TESTNET_NAME = "IRI Testnet";
public static final String VERSION = "1.4.1.2";
public static final String VERSION = "1.4.1.4";
public static Iota iota;
public static API api;
public static IXI ixi;
Expand Down Expand Up @@ -119,6 +119,8 @@ private static void validateParams(final Configuration configuration, final Stri
final Option<Boolean> revalidate = parser.addBooleanOption("revalidate");
final Option<Boolean> rescan = parser.addBooleanOption("rescan");
final Option<String> sendLimit = parser.addStringOption("send-limit");
final Option<Boolean> sync = parser.addBooleanOption("sync");

final Option<String> maxPeers = parser.addStringOption("max-peers");

try {
Expand Down Expand Up @@ -220,6 +222,10 @@ private static void validateParams(final Configuration configuration, final Stri
if (vsendLimit != null) {
configuration.put(DefaultConfSettings.SEND_LIMIT, vsendLimit);
}
if (parser.getOptionValue(sync) != null) {
configuration.put(DefaultConfSettings.NEW_TX_LIMIT, "0.0");
}


final String vmaxPeers = parser.getOptionValue(maxPeers);
if (vmaxPeers != null) {
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/iota/iri/Iota.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ public class Iota {

public final LedgerValidator ledgerValidator;
public final Milestone milestone;
public final Snapshot latestSnapshot;
public final Tangle tangle;
public final TransactionValidator transactionValidator;
public final TipsManager tipsManager;
Expand Down Expand Up @@ -81,12 +80,11 @@ public Iota(Configuration configuration) {
tipsViewModel = new TipsViewModel();
transactionRequester = new TransactionRequester(tangle, messageQ);
transactionValidator = new TransactionValidator(tangle, tipsViewModel, transactionRequester, messageQ);
latestSnapshot = new Snapshot(Snapshot.initialSnapshot);
milestone = new Milestone(tangle, coordinator, transactionValidator, testnet, messageQ);
milestone = new Milestone(tangle, coordinator, new Snapshot(Snapshot.initialSnapshot), transactionValidator, testnet, messageQ);
node = new Node(configuration, tangle, transactionValidator, transactionRequester, tipsViewModel, milestone, messageQ);
replicator = new Replicator(node, tcpPort, maxPeers, testnet);
udpReceiver = new UDPReceiver(udpPort, node);
ledgerValidator = new LedgerValidator(tangle, latestSnapshot, milestone, transactionRequester, messageQ);
ledgerValidator = new LedgerValidator(tangle, milestone, transactionRequester, messageQ);
tipsManager = new TipsManager(tangle, ledgerValidator, transactionValidator, tipsViewModel, milestone, maxTipSearchDepth, messageQ);
}

Expand Down
Loading

0 comments on commit 501e949

Please sign in to comment.