Skip to content

Commit 9671d2d

Browse files
authored
Merge branch 'develop' into feat/changelog
2 parents c6330ef + 12b210a commit 9671d2d

File tree

148 files changed

+6323
-4933
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+6323
-4933
lines changed

benches/block_limits.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,26 @@ extern crate blockstack_lib;
22
extern crate rand;
33
extern crate serde_json;
44

5+
use std::fs;
6+
use std::process;
7+
use std::{env, time::Instant};
8+
9+
use rand::Rng;
10+
11+
use blockstack_lib::clarity_vm::database::marf::MarfedKV;
12+
use blockstack_lib::types::chainstate::{StacksAddress, StacksBlockId};
13+
use blockstack_lib::types::{BlockHeaderHash, BurnchainHeaderHash, VRFSeed};
14+
use blockstack_lib::util::boot::boot_code_id;
515
use blockstack_lib::{
6-
burnchains::BurnchainHeaderHash,
7-
chainstate::{
8-
self,
9-
burn::BlockHeaderHash,
10-
stacks::{index::MarfTrieId, StacksBlockId},
11-
},
16+
chainstate::{self, stacks::index::MarfTrieId},
1217
vm::clarity::ClarityInstance,
1318
vm::costs::ExecutionCost,
14-
vm::database::MarfedKV,
1519
vm::{
1620
database::{HeadersDB, NULL_BURN_STATE_DB},
1721
types::{PrincipalData, QualifiedContractIdentifier, StandardPrincipalData},
1822
Value,
1923
},
2024
};
21-
use chainstate::{
22-
burn::VRFSeed,
23-
stacks::{boot::boot_code_id, StacksAddress},
24-
};
25-
26-
use std::fs;
27-
use std::process;
28-
use std::{env, time::Instant};
29-
30-
use rand::Rng;
3125

3226
struct TestHeadersDB;
3327

benches/large_contract_bench.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ extern crate criterion;
33
extern crate blockstack_lib;
44
extern crate rand;
55

6+
use blockstack_lib::clarity_vm::database::marf::MarfedKV;
7+
use blockstack_lib::types::BlockHeaderHash;
68
use blockstack_lib::{
7-
chainstate::burn::BlockHeaderHash,
8-
chainstate::stacks::index::storage::TrieFileStorage,
9-
vm::clarity::ClarityInstance,
10-
vm::database::{MarfedKV, NULL_HEADER_DB},
11-
vm::types::QualifiedContractIdentifier,
9+
chainstate::stacks::index::storage::TrieFileStorage, vm::clarity::ClarityInstance,
10+
vm::database::NULL_HEADER_DB, vm::types::QualifiedContractIdentifier,
1211
};
13-
1412
use criterion::Criterion;
1513

1614
pub fn rollback_log_memory_test() {

benches/marf_bench.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ extern crate criterion;
33
extern crate blockstack_lib;
44
extern crate rand;
55

6-
use blockstack_lib::chainstate::burn::BlockHeaderHash;
7-
use blockstack_lib::chainstate::stacks::index::{marf::MARF, storage::TrieFileStorage, MARFValue};
6+
use std::fs;
87

9-
use criterion::Criterion;
108
use rand::prelude::*;
11-
use std::fs;
9+
10+
use blockstack_lib::chainstate::stacks::index::{marf::MARF, storage::TrieFileStorage};
11+
use blockstack_lib::types::chainstate::MARFValue;
12+
use blockstack_lib::types::BlockHeaderHash;
13+
use criterion::Criterion;
1214

1315
fn benchmark_marf_usage(
1416
filename: &str,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
(begin
2+
(as-contract
3+
(contract-call? 'S1G2081040G2081040G2081040G208105NK8PE5.tokens-ft mint! u100)
4+
)
5+
)

sample-contracts/tokens-ft.clar

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
(define-fungible-token tokens)
2+
(define-private (get-balance (account principal))
3+
(ft-get-balance tokens account))
4+
5+
(define-private (token-credit! (account principal) (amount uint))
6+
(ft-mint? tokens amount account))
7+
8+
(define-public (token-transfer (to principal) (amount uint))
9+
(ft-transfer? tokens amount tx-sender to))
10+
11+
(define-public (mint! (amount uint))
12+
(token-credit! tx-sender amount))
13+
14+
(token-credit! tx-sender u10300)
15+
(token-transfer 'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR u10000)
16+
(token-transfer 'SM2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQVX8X0G u300)

sample-contracts/tokens-mint.clar

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
(as-contract
33
(contract-call? 'S1G2081040G2081040G2081040G208105NK8PE5.tokens mint! u100)
44
)
5-
)
5+
)

src/blockstack_cli.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,28 @@
2121

2222
extern crate blockstack_lib;
2323

24+
use std::convert::TryFrom;
25+
use std::io::prelude::*;
26+
use std::io::Read;
27+
use std::{env, fs, io};
28+
29+
use blockstack_lib::address::b58;
2430
use blockstack_lib::address::AddressHashMode;
31+
use blockstack_lib::burnchains::bitcoin::address::{
32+
ADDRESS_VERSION_MAINNET_SINGLESIG, ADDRESS_VERSION_TESTNET_SINGLESIG,
33+
};
2534
use blockstack_lib::burnchains::Address;
2635
use blockstack_lib::chainstate::stacks::{
27-
StacksAddress, StacksBlock, StacksMicroblock, StacksPrivateKey, StacksPublicKey,
28-
StacksTransaction, StacksTransactionSigner, TokenTransferMemo, TransactionAnchorMode,
29-
TransactionAuth, TransactionContractCall, TransactionPayload, TransactionSmartContract,
36+
StacksBlock, StacksMicroblock, StacksPrivateKey, StacksPublicKey, StacksTransaction,
37+
StacksTransactionSigner, TokenTransferMemo, TransactionAnchorMode, TransactionAuth,
38+
TransactionContractCall, TransactionPayload, TransactionSmartContract,
3039
TransactionSpendingCondition, TransactionVersion, C32_ADDRESS_VERSION_MAINNET_SINGLESIG,
3140
C32_ADDRESS_VERSION_TESTNET_SINGLESIG,
3241
};
42+
use blockstack_lib::codec::{Error as CodecError, StacksMessageCodec};
3343
use blockstack_lib::core::{CHAIN_ID_MAINNET, CHAIN_ID_TESTNET};
34-
use blockstack_lib::net::{Error as NetError, StacksMessageCodec};
44+
use blockstack_lib::net::Error as NetError;
45+
use blockstack_lib::types::chainstate::StacksAddress;
3546
use blockstack_lib::util::{
3647
hash::hex_bytes, hash::to_hex, log, retry::LogReader, strings::StacksString,
3748
};
@@ -41,15 +52,6 @@ use blockstack_lib::vm::{
4152
types::PrincipalData,
4253
ClarityName, ContractName, Value,
4354
};
44-
use std::convert::TryFrom;
45-
use std::io::prelude::*;
46-
use std::io::Read;
47-
use std::{env, fs, io};
48-
49-
use blockstack_lib::address::b58;
50-
use blockstack_lib::burnchains::bitcoin::address::{
51-
ADDRESS_VERSION_MAINNET_SINGLESIG, ADDRESS_VERSION_TESTNET_SINGLESIG,
52-
};
5355

5456
const USAGE: &str = "blockstack-cli (options) [method] [args...]
5557
@@ -215,6 +217,12 @@ impl From<NetError> for CliError {
215217
}
216218
}
217219

220+
impl From<CodecError> for CliError {
221+
fn from(value: CodecError) -> Self {
222+
CliError::Message(format!("Stacks CodecError: {}", value))
223+
}
224+
}
225+
218226
impl From<std::num::ParseIntError> for CliError {
219227
fn from(value: std::num::ParseIntError) -> Self {
220228
CliError::Message(format!("Failed to parse integer: {}", value))
@@ -779,6 +787,7 @@ fn main_handler(mut argv: Vec<String>) -> Result<String, CliError> {
779787
#[cfg(test)]
780788
mod test {
781789
use super::*;
790+
782791
#[test]
783792
fn generate_should_work() {
784793
assert!(main_handler(vec!["generate-sk".into(), "--testnet".into()]).is_ok());

src/burnchains/bitcoin/address.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,16 @@
1414
// You should have received a copy of the GNU General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
use burnchains::bitcoin::BitcoinNetworkType;
18-
use burnchains::Address;
19-
20-
use burnchains::bitcoin::Error as btc_error;
21-
22-
use util::hash::Hash160;
23-
use util::log;
24-
2517
use address::b58 as base58;
2618
use address::c32::c32_address;
27-
use deps::bitcoin::blockdata::script::Builder as BtcScriptBuilder;
28-
19+
use burnchains::bitcoin::BitcoinNetworkType;
20+
use burnchains::bitcoin::Error as btc_error;
21+
use burnchains::Address;
2922
use deps::bitcoin::blockdata::opcodes::All as BtcOp;
23+
use deps::bitcoin::blockdata::script::Builder as BtcScriptBuilder;
3024
use deps::bitcoin::blockdata::transaction::TxOut;
25+
use util::hash::Hash160;
26+
use util::log;
3127

3228
use chainstate::stacks::{
3329
C32_ADDRESS_VERSION_MAINNET_MULTISIG, C32_ADDRESS_VERSION_MAINNET_SINGLESIG,
@@ -281,11 +277,12 @@ impl std::fmt::Display for BitcoinAddress {
281277

282278
#[cfg(test)]
283279
mod tests {
284-
use super::{BitcoinAddress, BitcoinAddressType};
285280
use burnchains::bitcoin::BitcoinNetworkType;
286281
use util::hash::{hex_bytes, Hash160};
287282
use util::log;
288283

284+
use super::{BitcoinAddress, BitcoinAddressType};
285+
289286
struct AddressFixture {
290287
addr: String,
291288
result: Option<BitcoinAddress>,

src/burnchains/bitcoin/bits.rs

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,33 @@
1414
// You should have received a copy of the GNU General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
use deps::bitcoin::blockdata::opcodes::All as btc_opcodes;
18-
use deps::bitcoin::blockdata::opcodes::Class;
19-
use deps::bitcoin::blockdata::script::{Builder, Instruction, Script};
20-
use deps::bitcoin::blockdata::transaction::TxIn as BtcTxIn;
21-
use deps::bitcoin::blockdata::transaction::TxOut as BtcTxOut;
22-
use deps::bitcoin::util::hash::Sha256dHash;
23-
24-
use burnchains::bitcoin::{BitcoinInputType, BitcoinTxInput, BitcoinTxOutput};
25-
26-
use burnchains::{BurnchainHeaderHash, PublicKey};
17+
use sha2::Digest;
18+
use sha2::Sha256;
2719

20+
use address::public_keys_to_address_hash;
21+
use address::AddressHashMode;
2822
use burnchains::bitcoin::address::{BitcoinAddress, BitcoinAddressType};
2923
use burnchains::bitcoin::keys::BitcoinPublicKey;
3024
use burnchains::bitcoin::BitcoinNetworkType;
3125
use burnchains::bitcoin::Error as btc_error;
26+
use burnchains::bitcoin::{BitcoinInputType, BitcoinTxInput, BitcoinTxOutput};
27+
use burnchains::PublicKey;
3228
use burnchains::Txid;
29+
use deps::bitcoin::blockdata::opcodes::All as btc_opcodes;
30+
use deps::bitcoin::blockdata::opcodes::Class;
31+
use deps::bitcoin::blockdata::script::{Builder, Instruction, Script};
32+
use deps::bitcoin::blockdata::transaction::TxIn as BtcTxIn;
33+
use deps::bitcoin::blockdata::transaction::TxOut as BtcTxOut;
34+
use deps::bitcoin::util::hash::Sha256dHash;
35+
use util::hash::Hash160;
36+
use util::log;
3337

34-
use address::public_keys_to_address_hash;
35-
use address::AddressHashMode;
36-
38+
use crate::types::chainstate::BurnchainHeaderHash;
3739
use chainstate::stacks::{
3840
C32_ADDRESS_VERSION_MAINNET_MULTISIG, C32_ADDRESS_VERSION_MAINNET_SINGLESIG,
3941
C32_ADDRESS_VERSION_TESTNET_MULTISIG, C32_ADDRESS_VERSION_TESTNET_SINGLESIG,
4042
};
4143

42-
use sha2::Digest;
43-
use sha2::Sha256;
44-
45-
use util::hash::Hash160;
46-
use util::log;
47-
4844
/// Parse a script into its structured constituant opcodes and data and collect them
4945
pub fn parse_script<'a>(script: &'a Script) -> Vec<Instruction<'a>> {
5046
// we will have to accept non-minimial pushdata since there's at least one OP_RETURN
@@ -584,20 +580,19 @@ impl BurnchainHeaderHash {
584580

585581
#[cfg(test)]
586582
mod tests {
587-
use super::parse_script;
588-
use super::BitcoinTxInput;
589-
use super::BitcoinTxOutput;
590-
use util::hash::hex_bytes;
591-
592583
use burnchains::bitcoin::address::{BitcoinAddress, BitcoinAddressType};
593584
use burnchains::bitcoin::keys::BitcoinPublicKey;
594585
use burnchains::bitcoin::BitcoinInputType;
595586
use burnchains::bitcoin::BitcoinNetworkType;
596587
use burnchains::Txid;
597588
use deps::bitcoin::blockdata::script::{Builder, Script};
598-
589+
use util::hash::hex_bytes;
599590
use util::log;
600591

592+
use super::parse_script;
593+
use super::BitcoinTxInput;
594+
use super::BitcoinTxOutput;
595+
601596
struct ScriptFixture<T> {
602597
script: Script,
603598
result: T,

src/burnchains/bitcoin/blocks.rs

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@
1616

1717
use std::ops::Deref;
1818

19-
use deps;
20-
use deps::bitcoin::blockdata::block::{Block, LoneBlockHeader};
21-
use deps::bitcoin::blockdata::opcodes::All as btc_opcodes;
22-
use deps::bitcoin::blockdata::script::{Instruction, Script};
23-
use deps::bitcoin::blockdata::transaction::Transaction;
24-
25-
use deps::bitcoin::network::message as btc_message;
26-
use deps::bitcoin::network::serialize::BitcoinHash;
27-
28-
use deps::bitcoin::util::hash::bitcoin_merkle_root;
29-
3019
use burnchains::bitcoin::address::BitcoinAddress;
3120
use burnchains::bitcoin::bits;
3221
use burnchains::bitcoin::indexer::BitcoinIndexer;
@@ -36,22 +25,24 @@ use burnchains::bitcoin::BitcoinInputType;
3625
use burnchains::bitcoin::BitcoinNetworkType;
3726
use burnchains::bitcoin::Error as btc_error;
3827
use burnchains::bitcoin::PeerMessage;
39-
28+
use burnchains::bitcoin::{BitcoinBlock, BitcoinTransaction, BitcoinTxInput, BitcoinTxOutput};
4029
use burnchains::indexer::{
4130
BurnBlockIPC, BurnHeaderIPC, BurnchainBlockDownloader, BurnchainBlockParser,
4231
};
43-
4432
use burnchains::Error as burnchain_error;
45-
33+
use burnchains::{BurnchainBlock, BurnchainTransaction, MagicBytes, Txid, MAGIC_BYTES_LENGTH};
34+
use deps;
35+
use deps::bitcoin::blockdata::block::{Block, LoneBlockHeader};
36+
use deps::bitcoin::blockdata::opcodes::All as btc_opcodes;
37+
use deps::bitcoin::blockdata::script::{Instruction, Script};
38+
use deps::bitcoin::blockdata::transaction::Transaction;
39+
use deps::bitcoin::network::message as btc_message;
40+
use deps::bitcoin::network::serialize::BitcoinHash;
41+
use deps::bitcoin::util::hash::bitcoin_merkle_root;
42+
use util::hash::to_hex;
4643
use util::log;
4744

48-
use burnchains::bitcoin::{BitcoinBlock, BitcoinTransaction, BitcoinTxInput, BitcoinTxOutput};
49-
50-
use burnchains::{
51-
BurnchainBlock, BurnchainHeaderHash, BurnchainTransaction, MagicBytes, Txid, MAGIC_BYTES_LENGTH,
52-
};
53-
54-
use util::hash::to_hex;
45+
use crate::types::chainstate::BurnchainHeaderHash;
5546

5647
#[derive(Debug, Clone, PartialEq)]
5748
pub struct BitcoinHeaderIPC {
@@ -477,26 +468,23 @@ impl BurnchainBlockParser for BitcoinBlockParser {
477468

478469
#[cfg(test)]
479470
mod tests {
480-
481-
use super::BitcoinBlockParser;
482-
use util::hash::hex_bytes;
483-
471+
use burnchains::bitcoin::address::{BitcoinAddress, BitcoinAddressType};
472+
use burnchains::bitcoin::keys::BitcoinPublicKey;
473+
use burnchains::bitcoin::BitcoinNetworkType;
474+
use burnchains::bitcoin::{
475+
BitcoinBlock, BitcoinInputType, BitcoinTransaction, BitcoinTxInput, BitcoinTxOutput,
476+
};
477+
use burnchains::{BurnchainBlock, BurnchainTransaction, MagicBytes, Txid};
484478
use deps::bitcoin::blockdata::block::{Block, LoneBlockHeader};
485479
use deps::bitcoin::blockdata::transaction::Transaction;
486480
use deps::bitcoin::network::encodable::VarInt;
487481
use deps::bitcoin::network::serialize::deserialize;
482+
use util::hash::hex_bytes;
483+
use util::log;
488484

489-
use burnchains::bitcoin::{
490-
BitcoinBlock, BitcoinInputType, BitcoinTransaction, BitcoinTxInput, BitcoinTxOutput,
491-
};
492-
493-
use burnchains::{BurnchainBlock, BurnchainHeaderHash, BurnchainTransaction, MagicBytes, Txid};
494-
495-
use burnchains::bitcoin::address::{BitcoinAddress, BitcoinAddressType};
496-
use burnchains::bitcoin::keys::BitcoinPublicKey;
497-
use burnchains::bitcoin::BitcoinNetworkType;
485+
use crate::types::chainstate::BurnchainHeaderHash;
498486

499-
use util::log;
487+
use super::BitcoinBlockParser;
500488

501489
struct TxFixture {
502490
txstr: String,

0 commit comments

Comments
 (0)