Skip to content

Commit 14fa145

Browse files
committed
Merge remote-tracking branch 'refs/remotes/upstream/develop' into refactor/disable-p2sh
# Conflicts: # src/utils/transaction_utils.rs
2 parents f5411dc + 7bf4c4e commit 14fa145

File tree

14 files changed

+213
-91
lines changed

14 files changed

+213
-91
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "tw_chain"
3-
version = "1.1.1"
3+
version = "1.1.3"
44
homepage = "https://aiblock.dev"
55
description = "AIBlock Chain is a distributed blockchain store with a 2-way entry data structure."
66
authors = ["Byron Houwens <[email protected]>", "Anton Troskie <[email protected]>"]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Blockchain can be added to your project as a dependency by adding the following
4949

5050
```toml
5151
[dependencies]
52-
tw_chain = "1.0.2"
52+
tw_chain = "1.1.2"
5353
```
5454

5555
Or alternatively, via command line:

readmes/README.ar.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ cargo test
4242

4343
```toml
4444
[dependencies]
45-
tw_chain = "1.0.2"
45+
tw_chain = "1.1.2"
4646
```
4747

4848
أو بديلًا ، عبر سطر الأوامر:

readmes/README.de.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Blockchain kann als Abhängigkeit zu Ihrem Projekt hinzugefügt werden, indem Si
4242

4343
```toml
4444
[dependencies]
45-
tw_chain = "1.0.2"
45+
tw_chain = "1.1.2"
4646
```
4747

4848
Alternativ können Sie es auch über die Befehlszeile hinzufügen:

readmes/README.es.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Blockchain puede ser añadido a tu proyecto como una dependencia añadiendo lo s
4242

4343
```toml
4444
[dependencies]
45-
tw_chain = "1.0.2"
45+
tw_chain = "1.1.2"
4646
```
4747

4848
O alternativamente, a través de la línea de comandos:

readmes/README.fr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Blockchain peut être ajouté à votre projet en tant que dépendance en ajoutan
4343

4444
```toml
4545
[dependencies]
46-
tw_chain = "1.0.2"
46+
tw_chain = "1.1.2"
4747
```
4848

4949
Ou bien, via la ligne de commande :

readmes/README.zhs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ cargo test
4242

4343
```toml
4444
[dependencies]
45-
tw_chain = "1.0.2"
45+
tw_chain = "1.1.2"
4646
```
4747

4848
或者,通过命令行:

src/primitives/asset.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use crate::primitives::transaction::OutPoint;
2-
use crate::utils::{add_btreemap, format_for_display};
2+
use crate::utils::{add_btreemap, format_for_display, is_valid_amount};
33
use serde::{Deserialize, Serialize};
44
use std::{collections::BTreeMap, fmt, iter, mem::size_of, ops};
5+
use tracing::debug;
56

67
/// A structure representing the amount of tokens in an instance
78
#[derive(Deserialize, Serialize, Default, Debug, Copy, Clone, Eq, PartialEq, PartialOrd, Ord)]
@@ -243,6 +244,7 @@ impl Asset {
243244
pub fn get_excess(&self, rhs: &Asset) -> Option<Asset> {
244245
match (&self, &rhs) {
245246
(Asset::Token(lhs_tokens), Asset::Token(rhs_tokens)) => {
247+
debug!("LHS tokens: {:?}, RHS tokens: {:?}", lhs_tokens, rhs_tokens);
246248
if lhs_tokens > rhs_tokens {
247249
Some(Asset::Token(*lhs_tokens - *rhs_tokens))
248250
} else {
@@ -370,7 +372,14 @@ impl AssetValues {
370372
/// Add the `rhs` parameter to `self`
371373
pub fn update_add(&mut self, rhs: &Asset) {
372374
match rhs {
373-
Asset::Token(tokens) => self.tokens += *tokens,
375+
Asset::Token(tokens) => {
376+
let add = self.tokens + *tokens;
377+
378+
match is_valid_amount(&add) {
379+
true => self.tokens += *tokens,
380+
false => self.tokens += TokenAmount::default(),
381+
}
382+
},
374383
Asset::Item(items) => {
375384
if let Some(genesis_hash) = &items.genesis_hash {
376385
self.items

src/primitives/transaction.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,13 @@ impl TxOut {
138138
amount: TokenAmount,
139139
locktime: Option<u64>,
140140
) -> TxOut {
141+
let value = match is_valid_amount(&amount) {
142+
true => Asset::Token(amount),
143+
false => Asset::Token(TokenAmount::default()),
144+
};
145+
141146
TxOut {
142-
value: Asset::Token(amount),
147+
value,
143148
locktime: locktime.unwrap_or(ZERO as u64),
144149
script_public_key: Some(to_address),
145150
}
@@ -227,3 +232,17 @@ impl Transaction {
227232
.unwrap_or_default()
228233
}
229234
}
235+
236+
#[cfg(test)]
237+
mod tests {
238+
use crate::primitives::asset::{Asset, TokenAmount};
239+
use crate::primitives::transaction::TxOut;
240+
241+
#[test]
242+
fn test_overflow_tx_out() {
243+
let amount = TokenAmount(u64::MAX);
244+
let tx_out = TxOut::new_token_amount("test".to_string(), amount, None);
245+
246+
assert_eq!(tx_out.value, Asset::Token(TokenAmount::default()));
247+
}
248+
}

0 commit comments

Comments
 (0)