Skip to content

Commit 2e747db

Browse files
Merge pull request #7 from Bitcoin-com/0.0.2-SNAPSHOT
0.0.2 snapshot
2 parents db655ed + 7ebd8b3 commit 2e747db

File tree

16 files changed

+106
-27
lines changed

16 files changed

+106
-27
lines changed

slp-indexer-api-service/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.bitcoin.indexer</groupId>
77
<artifactId>slp-indexer-api-service</artifactId>
8-
<version>0.0.1-SNAPSHOT</version>
8+
<version>0.0.2-SNAPSHOT</version>
99
<packaging>pom</packaging>
1010

1111
<name>API</name>
@@ -36,17 +36,17 @@
3636
<dependency>
3737
<groupId>com.bitcoin.indexer</groupId>
3838
<artifactId>slp-indexer-api-service-domain</artifactId>
39-
<version>0.0.1-SNAPSHOT</version>
39+
<version>0.0.2-SNAPSHOT</version>
4040
</dependency>
4141
<dependency>
4242
<groupId>com.bitcoin.indexer</groupId>
4343
<artifactId>slp-indexer-api-service-app</artifactId>
44-
<version>0.0.1-SNAPSHOT</version>
44+
<version>0.0.2-SNAPSHOT</version>
4545
</dependency>
4646
<dependency>
4747
<groupId>com.bitcoin.indexer</groupId>
4848
<artifactId>slp-indexer-api-service-integration-test</artifactId>
49-
<version>0.0.1-SNAPSHOT</version>
49+
<version>0.0.2-SNAPSHOT</version>
5050
</dependency>
5151

5252
<dependency>

slp-indexer-api-service/slp-indexer-api-service-app/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<parent>
99
<groupId>com.bitcoin.indexer</groupId>
1010
<artifactId>slp-indexer-api-service</artifactId>
11-
<version>0.0.1-SNAPSHOT</version>
11+
<version>0.0.2-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>slp-indexer-api-service-app</artifactId>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.0.2-SNAPSHOT</version>
1616

1717
<dependencies>
1818
<dependency>
@@ -35,7 +35,7 @@
3535
<dependency>
3636
<groupId>com.bitcoin.indexer</groupId>
3737
<artifactId>slp-indexer-service-domain</artifactId>
38-
<version>0.0.1-SNAPSHOT</version>
38+
<version>0.0.2-SNAPSHOT</version>
3939
</dependency>
4040

4141
<dependency>

slp-indexer-api-service/slp-indexer-api-service-domain/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<parent>
99
<groupId>com.bitcoin.indexer</groupId>
1010
<artifactId>slp-indexer-api-service</artifactId>
11-
<version>0.0.1-SNAPSHOT</version>
11+
<version>0.0.2-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>slp-indexer-api-service-domain</artifactId>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.0.2-SNAPSHOT</version>
1616

1717
<dependencies>
1818
<dependency>

slp-indexer-api-service/slp-indexer-api-service-integration-test/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<parent>
99
<groupId>com.bitcoin.indexer</groupId>
1010
<artifactId>slp-indexer-api-service</artifactId>
11-
<version>0.0.1-SNAPSHOT</version>
11+
<version>0.0.2-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>slp-indexer-api-service-integration-test</artifactId>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.0.2-SNAPSHOT</version>
1616

1717
<dependencies>
1818
<dependency>

slp-indexer-service/pom.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.bitcoin.indexer</groupId>
77
<artifactId>slp-indexer-service</artifactId>
8-
<version>0.0.1-SNAPSHOT</version>
8+
<version>0.0.2-SNAPSHOT</version>
99
<packaging>pom</packaging>
1010

1111
<name>WRITER</name>
@@ -45,7 +45,6 @@
4545
<spring-boot-admin.version>2.1.3</spring-boot-admin.version>
4646
<spring.cloud.netflix.version>2.1.0.RELEASE</spring.cloud.netflix.version>
4747
<spring.restdocs.version>2.0.3.RELEASE</spring.restdocs.version>
48-
<router.lib.version>0.0.1-SNAPSHOT</router.lib.version>
4948
<spring.auto.restdocs.version>2.0.4</spring.auto.restdocs.version>
5049
<spring.data.cassandra.version>2.1.4.RELEASE</spring.data.cassandra.version>
5150
<!-- TEST -->

slp-indexer-service/slp-indexer-service-app/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
<parent>
99
<groupId>com.bitcoin.indexer</groupId>
1010
<artifactId>slp-indexer-service</artifactId>
11-
<version>0.0.1-SNAPSHOT</version>
11+
<version>0.0.2-SNAPSHOT</version>
1212
</parent>
1313

1414
<artifactId>slp-indexer-service-app</artifactId>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.0.2-SNAPSHOT</version>
1616

1717
<dependencies>
1818
<dependency>

slp-indexer-service/slp-indexer-service-app/src/main/resources/application-prod.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ svp.header.store=/var/blockchain/indexer/spvheaderstore
66
#dns.discovery=DNS_TO_YOUR_NODES
77
#spring.data.mongodb.uri=CONNECTIONSTRING
88
#spring.data.mongodb.database=slpblockchain
9+
#bitcoinj.peers.bch=127.0.0.1:8333,127.0.0.2:8333
910

1011

1112
spring.application.name=slp-indexer-service

slp-indexer-service/slp-indexer-service-domain/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
<parent>
1313
<groupId>com.bitcoin.indexer</groupId>
1414
<artifactId>slp-indexer-service</artifactId>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.0.2-SNAPSHOT</version>
1616
</parent>
1717

1818
<artifactId>slp-indexer-service-domain</artifactId>
19-
<version>0.0.1-SNAPSHOT</version>
19+
<version>0.0.2-SNAPSHOT</version>
2020

2121

2222
<dependencies>

slp-indexer-service/slp-indexer-service-domain/src/main/java/com/bitcoin/indexer/blockchain/domain/slp/Script.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.bitcoin.indexer.blockchain.domain.slp
22

3+
import org.bitcoinj.script.ScriptOpCodes
4+
35
/**
46
* @author akibabu
57
*/
@@ -11,10 +13,21 @@ internal class Script {
1113
constructor(bytes: ByteArray) : this(org.bitcoinj.script.Script(bytes))
1214

1315
constructor(script: org.bitcoinj.script.Script) {
16+
validateScript(script)
1417
this.script = script
1518
this.bytes = script.program
1619
}
1720

21+
private fun validateScript(script: org.bitcoinj.script.Script) {
22+
script.chunks.forEach{
23+
if (it.opcode == ScriptOpCodes.OP_0) {
24+
throw RuntimeException("Invalid script")
25+
}
26+
}
27+
28+
29+
}
30+
1831
val isOpReturn: Boolean
1932
get() = script.isOpReturn
2033
val chunks: List<ByteArray?>

slp-indexer-service/slp-indexer-service-domain/src/main/java/com/bitcoin/indexer/blockchain/domain/slp/SlpOpReturnGenesis.kt

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,54 @@ data class SlpOpReturnGenesis(
2525
companion object {
2626

2727
fun create(tokenType: SlpTokenType, tokenId: SlpTokenId, chunks: List<ByteArray?>): SlpOpReturnGenesis? {
28-
val ticker = chunks[4]?.let { String(it) } ?: ""
29-
val name = chunks[5]?.let { String(it) } ?: ""
30-
val decimals = chunks[8]?.let { ByteUtils.toInt(it) } ?: return null
31-
val batonByte: Byte? = chunks[9]?.let { it.getOrNull(0) }
28+
validateChunkSize(chunks)
29+
val ticker = chunks[4]?.let { String(it).replace(Char.MIN_VALUE, ' ') } ?: ""
30+
val name = chunks[5]?.let { String(it).replace(Char.MIN_VALUE, ' ') } ?: ""
31+
val decimals = chunks[8]?.let { ByteUtils.toInt(validateDecimals(it)) } ?: return null
32+
val batonByte: Byte? = validateBatonVout(chunks[9]?.getOrNull(0))
3233
val mintedAmount = chunks[10]?.let { it }.let { UnsignedBigInteger.parseUnsigned(BigInteger(it)) } ?: return null
33-
val documentUri = chunks[6]?.let { String(it) } ?: ""
34+
val documentUri = chunks[6]?.let { String(it).replace(Char.MIN_VALUE, '0') } ?: ""
35+
val documentHash = chunks[7]?.let { String(validateDocumentHash(it)).replace(Char.MIN_VALUE, '0') } ?: ""
3436
return SlpOpReturnGenesis(tokenType, tokenId, ticker, name, decimals, batonByte?.toInt(), mintedAmount, documentUri);
3537
}
38+
39+
private fun validateDecimals(chunk: ByteArray): ByteArray {
40+
if (chunk.isEmpty() || chunk.size > 1) {
41+
throw RuntimeException("Invalid decimals")
42+
}
43+
if (ByteUtils.toInt(chunk) > 9) {
44+
throw RuntimeException("Invalid decimals")
45+
}
46+
47+
return chunk;
48+
}
49+
50+
private fun validateBatonVout(batonByte: Byte?): Byte? {
51+
if (batonByte != null) {
52+
if (batonByte.toInt() == 0 || batonByte.toInt() == 1) {
53+
throw RuntimeException("Invalid baton")
54+
}
55+
}
56+
return batonByte
57+
}
58+
59+
private fun validateDocumentHash(chunk: ByteArray): ByteArray {
60+
if (chunk.size == 32 || chunk.isEmpty()) {
61+
return chunk
62+
}
63+
throw RuntimeException("Invalid documentHash")
64+
}
65+
66+
private fun validateChunkSize(chunks: List<ByteArray?>) {
67+
if (chunks.size > 11) {
68+
throw RuntimeException("Invalid chunk size")
69+
}
70+
}
3671
}
3772

73+
74+
75+
3876
override fun toString(): String {
3977
return "SlpOpReturnGenesis(tokenType=$tokenType, tokenId=$tokenId, ticker='$ticker', name='$name', decimals=$decimals, batonVout=$batonVout, mintedAmount=$mintedAmount, documentUri='$documentUri')"
4078
}

0 commit comments

Comments
 (0)