Skip to content

Commit

Permalink
Merge pull request #21 from RGB-WG/develop
Browse files Browse the repository at this point in the history
Update to the resolver new APIs
  • Loading branch information
dr-orlovsky committed Jul 14, 2023
2 parents 32dbfac + 6a47a5b commit a1f7832
Show file tree
Hide file tree
Showing 12 changed files with 95 additions and 82 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
strategy:
fail-fast: false
matrix:
toolchain: [ nightly, beta, stable, 1.66.0 ]
toolchain: [ nightly, beta, stable, 1.67.0 ]
steps:
- uses: actions/checkout@v3
- name: Install rust ${{ matrix.toolchain }}
Expand Down
49 changes: 27 additions & 22 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 7 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ default-members = [
authors = ["Dr Maxim Orlovsky <orlovsky@lnp-bp.org>"]
homepage = "https://github.com/RGB-WG"
repository = "https://github.com/RGB-WG/rgb"
rust-version = "1.66" # Due to strict encoding library (caused by GAD)
rust-version = "1.67" # Due to strict encoding library
edition = "2021"
license = "Apache-2.0"

[workspace.dependencies]
amplify = "4.0.0"
baid58 = "0.3.1"
strict_encoding = "2.4.1"
strict_types = "1.4.1"
rgb-std = { version = "0.10.2", features = ["fs"] }
rgb-wallet = { version = "0.10.2", features = ["fs"] }
strict_encoding = "2.5.0"
strict_types = "1.5.0"
rgb-std = { version = "0.10.3", features = ["fs"] }
rgb-wallet = { version = "0.10.3", features = ["fs"] }

[package]
name = "rgb-contracts"
Expand Down Expand Up @@ -50,8 +50,8 @@ required-features = ["cli"]
amplify = { workspace = true }
baid58 = { workspace = true }
strict_types = { workspace = true, features = ["serde"] }
commit_verify = "0.10.2"
bp-core = { version = "0.10.3", features = ["serde"] }
commit_verify = "0.10.4"
bp-core = { version = "0.10.5", features = ["serde"] }
rgb-std = { workspace = true }
rgb-wallet = { workspace = true }
rgb-persist-fs = { version = "0.10.0", path = "fs" }
Expand All @@ -72,8 +72,3 @@ cli = ["clap", "shellexpand", "log", "electrum"]

[package.metadata.docs.rs]
features = [ "all" ]

[patch.crates-io]
rgb-core = { git = "https://github.com/RGB-WG/rgb-core" }
rgb-std = { git = "https://github.com/RGB-WG/rgb-wallet" }
rgb-wallet = { git = "https://github.com/RGB-WG/rgb-wallet" }
2 changes: 1 addition & 1 deletion MANIFEST.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Type: Binary
Kind: Free software
License: Apache-2.0
Language: Rust
Compiler: 1.66
Compiler: 1.67
Author: Maxim Orlovsky
Maintained: LNP/BP Standards Association, Switzerland
Maintainers:
Expand Down
42 changes: 23 additions & 19 deletions examples/rgb20-demo.con
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
contract Test implements RGB20
spec := (
spec = (
naming = (
ticker = "TEST",
name = "Test Asset"
),
precision = centiMicro
)
terms := """
SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER
EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE
TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY
TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”,
WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS,
DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS
OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR
PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS
SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER,
PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY
ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES
HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE
PROPERTY IS BEING SOLD “AS IS”.
"""
issuedSupply := 1_000_000__000_000_00
created := 1687969158
data = (
terms =
"""
SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER
EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE
TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY
TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”,
WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS,
DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS
OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR
PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS
SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER,
PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY
ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES
HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE
PROPERTY IS BEING SOLD “AS IS”.
""",
media = ~
)
issuedSupply = 1_000_000__000_000_00
created = 1687969158

assetOwner := 1_000_000__000_000_00 @ tapret1st:01d46e52c4bdb51931a0eae83e958c78bdef9cac2057b36d55370410edafdd42:0
assetOwner = 1_000_000__000_000_00 @ tapret1st:01d46e52c4bdb51931a0eae83e958c78bdef9cac2057b36d55370410edafdd42:0
Binary file removed examples/rgb20-demo.contract.rgb
Binary file not shown.
4 changes: 3 additions & 1 deletion examples/rgb20-demo.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
},
"precision": "centiMicro"
},
"terms": "SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”, WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS, DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER, PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE PROPERTY IS BEING SOLD “AS IS”.",
"data": {
"terms": "SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”, WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS, DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER, PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE PROPERTY IS BEING SOLD “AS IS”."
},
"issuedSupply": 100000000000000,
"created": 1687969158
}
Expand Down
Binary file added examples/rgb20-demo.rgb
Binary file not shown.
4 changes: 2 additions & 2 deletions examples/rgb20-demo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ interface = "RGB20"

[global]
spec = { naming = { ticker = "TEST", name = "Test asset" }, precision = "centiMicro" }
terms = """
data = { terms = """
SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER
EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE
TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY
Expand All @@ -16,7 +16,7 @@ PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHA
ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES
HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE
PROPERTY IS BEING SOLD “AS IS”.
"""
""" }
issuedSupply = 1_000_000_000_000_00
created = 1687969158

Expand Down
30 changes: 16 additions & 14 deletions examples/rgb20-demo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,22 @@ globals:
name: Test asset by RGB command-line
details: ~
precision: 8
terms: >
SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER
EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE
TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY
TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”,
WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS,
DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS
OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR
PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS
SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER,
PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY
ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES
HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE
PROPERTY IS BEING SOLD “AS IS”.
data:
terms: >
SUBJECT TO, AND WITHOUT IN ANY WAY LIMITING, THE REPRESENTATIONS AND WARRANTIES OF ANY SELLER
EXPRESSLY SET FORTH IN THIS AGREEMENT OR ANY OTHER EXPRESS OBLIGATION OF SELLERS PURSUANT TO THE
TERMS HEREOF, AND ACKNOWLEDGING THE PRIOR USE OF THE PROPERTY AND PURCHASER’S OPPORTUNITY
TO INSPECT THE PROPERTY, PURCHASER AGREES TO PURCHASE THE PROPERTY “AS IS”, “WHERE IS”,
WITH ALL FAULTS AND CONDITIONS THEREON. ANY WRITTEN OR ORAL INFORMATION, REPORTS, STATEMENTS,
DOCUMENTS OR RECORDS CONCERNING THE PROPERTY PROVIDED OR MADE AVAILABLE TO PURCHASER, ITS AGENTS
OR CONSTITUENTS BY ANY SELLER, ANY SELLER’S AGENTS, EMPLOYEES OR THIRD PARTIES REPRESENTING OR
PURPORTING TO REPRESENT ANY SELLER, SHALL NOT BE REPRESENTATIONS OR WARRANTIES, UNLESS
SPECIFICALLY SET FORTH HEREIN. IN PURCHASING THE PROPERTY OR TAKING OTHER ACTION HEREUNDER,
PURCHASER HAS NOT AND SHALL NOT RELY ON ANY SUCH DISCLOSURES, BUT RATHER, PURCHASER SHALL RELY
ONLY ON PURCHASER’S OWN INSPECTION OF THE PROPERTY AND THE REPRESENTATIONS AND WARRANTIES
HEREIN. PURCHASER ACKNOWLEDGES THAT THE PURCHASE PRICE REFLECTS AND TAKES INTO ACCOUNT THAT THE
PROPERTY IS BEING SOLD “AS IS”.
media: ~
issuedSupply: 100000000000000
created: 1687969158

Expand Down
2 changes: 1 addition & 1 deletion src/bin/rgb/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ impl Command {
.global_state
.iter()
.find(|info| info.name.as_str() == name)
.expect("unknown type name")
.expect(&format!("unknown type name '{name}'"))
.id;
let sem_id = schema
.global_types
Expand Down
23 changes: 14 additions & 9 deletions src/wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ mod _electrum {
use bitcoin::{Script, ScriptBuf};
use bp::{Chain, LockTime, SeqNo, Tx, TxIn, TxOut, TxVer, VarIntArray, Witness};
use electrum_client::{ElectrumApi, Error, ListUnspentRes};
use rgbstd::contract::WitnessOrd;
use rgbstd::resolvers::ResolveHeight;
use rgbstd::validation::{ResolveTx, TxResolverError};

Expand Down Expand Up @@ -179,16 +180,17 @@ mod _electrum {

impl ResolveHeight for BlockchainResolver {
type Error = TxResolverError;
fn resolve_height(&mut self, txid: Txid) -> Result<u32, Self::Error> {
let resp = self
fn resolve_height(&mut self, txid: Txid) -> Result<WitnessOrd, Self::Error> {
let tx = match self
.0
.transaction_get(&bitcoin::Txid::from_byte_array(txid.to_raw_array()))
.map_err(|err| match err {
Error::Message(_) | Error::Protocol(_) => TxResolverError::Unknown(txid),
err => TxResolverError::Other(txid, err.to_string()),
})?;
{
Ok(tx) => tx,
Err(Error::Message(_) | Error::Protocol(_)) => return Ok(WitnessOrd::OffChain),
Err(err) => return Err(TxResolverError::Other(txid, err.to_string())),
};

let scripts: Vec<&Script> = resp
let scripts: Vec<&Script> = tx
.output
.iter()
.map(|out| out.script_pubkey.as_script())
Expand All @@ -208,8 +210,11 @@ mod _electrum {
.map(|h| (h.tx_hash, if h.height > 0 { h.height as u32 } else { 0 }))
.collect();

let min_height = transactions.into_values().min();
let min_height = min_height.unwrap_or_default();
let min_height = transactions
.into_values()
.min()
.map(WitnessOrd::with_mempool_or_height)
.unwrap_or(WitnessOrd::OffChain);

Ok(min_height)
}
Expand Down

0 comments on commit a1f7832

Please sign in to comment.