mirror of
https://github.com/alexgo-io/stacks-puppet-node.git
synced 2026-04-29 04:05:21 +08:00
Merge branch 'develop' into rft_vec_to_sli
This commit is contained in:
@@ -30,6 +30,7 @@ use stacks::vm::events::{FTEventType, NFTEventType, STXEventType};
|
||||
use stacks::vm::types::{AssetIdentifier, QualifiedContractIdentifier, Value};
|
||||
|
||||
use super::config::{EventKeyType, EventObserverConfig};
|
||||
use stacks::chainstate::burn::operations::BlockstackOperationType;
|
||||
use stacks::chainstate::burn::ConsensusHash;
|
||||
use stacks::chainstate::stacks::db::unconfirmed::ProcessedUnconfirmedState;
|
||||
use stacks::chainstate::stacks::miner::TransactionEvent;
|
||||
@@ -46,6 +47,7 @@ struct ReceiptPayloadInfo<'a> {
|
||||
raw_result: String,
|
||||
raw_tx: String,
|
||||
contract_interface_json: serde_json::Value,
|
||||
burnchain_op_json: serde_json::Value,
|
||||
}
|
||||
|
||||
const STATUS_RESP_TRUE: &str = "success";
|
||||
@@ -214,12 +216,16 @@ impl EventObserver {
|
||||
}
|
||||
};
|
||||
|
||||
let (txid, raw_tx) = match tx {
|
||||
TransactionOrigin::Burn(txid) => (txid.to_string(), "00".to_string()),
|
||||
let (txid, raw_tx, burnchain_op_json) = match tx {
|
||||
TransactionOrigin::Burn(op) => (
|
||||
op.txid().to_string(),
|
||||
"00".to_string(),
|
||||
BlockstackOperationType::blockstack_op_to_json(&op),
|
||||
),
|
||||
TransactionOrigin::Stacks(ref tx) => {
|
||||
let txid = tx.txid().to_string();
|
||||
let bytes = tx.serialize_to_vec();
|
||||
(txid, bytes_to_hex(&bytes))
|
||||
(txid, bytes_to_hex(&bytes), json!(null))
|
||||
}
|
||||
};
|
||||
|
||||
@@ -239,6 +245,7 @@ impl EventObserver {
|
||||
raw_result,
|
||||
raw_tx,
|
||||
contract_interface_json,
|
||||
burnchain_op_json,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,6 +263,7 @@ impl EventObserver {
|
||||
"raw_result": format!("0x{}", &receipt_payload_info.raw_result),
|
||||
"raw_tx": format!("0x{}", &receipt_payload_info.raw_tx),
|
||||
"contract_abi": receipt_payload_info.contract_interface_json,
|
||||
"burnchain_op": receipt_payload_info.burnchain_op_json,
|
||||
"execution_cost": receipt.execution_cost,
|
||||
"microblock_sequence": receipt.microblock_header.as_ref().map(|x| x.sequence),
|
||||
"microblock_hash": receipt.microblock_header.as_ref().map(|x| format!("0x{}", x.block_hash())),
|
||||
|
||||
@@ -1505,6 +1505,12 @@ fn stx_transfer_btc_integration_test() {
|
||||
|
||||
let (mut conf, _miner_account) = neon_integration_test_conf();
|
||||
|
||||
test_observer::spawn();
|
||||
conf.events_observers.push(EventObserverConfig {
|
||||
endpoint: format!("localhost:{}", test_observer::EVENT_OBSERVER_PORT),
|
||||
events_keys: vec![EventKeyType::AnyEvent],
|
||||
});
|
||||
|
||||
conf.initial_balances.push(InitialBalance {
|
||||
address: spender_addr.clone(),
|
||||
amount: 100300,
|
||||
@@ -1547,6 +1553,8 @@ fn stx_transfer_btc_integration_test() {
|
||||
// second block will be the first mined Stacks block
|
||||
next_block_and_wait(&mut btc_regtest_controller, &blocks_processed);
|
||||
|
||||
test_observer::clear();
|
||||
|
||||
// let's query the spender's account:
|
||||
assert_eq!(get_balance(&http_origin, &spender_addr), 100300);
|
||||
|
||||
@@ -1686,6 +1694,23 @@ fn stx_transfer_btc_integration_test() {
|
||||
assert_eq!(get_balance(&http_origin, &recipient_addr), 200_000);
|
||||
assert_eq!(get_balance(&http_origin, &spender_2_addr), 300);
|
||||
|
||||
let mut found_btc_tx = false;
|
||||
let blocks = test_observer::get_blocks();
|
||||
for block in blocks {
|
||||
let transactions = block.get("transactions").unwrap().as_array().unwrap();
|
||||
for tx in transactions.iter() {
|
||||
let raw_tx = tx.get("raw_tx").unwrap().as_str().unwrap();
|
||||
if raw_tx == "0x00" {
|
||||
let burnchain_op = tx.get("burnchain_op").unwrap().as_object().unwrap();
|
||||
if !burnchain_op.contains_key("TransferStx") {
|
||||
panic!("unexpected btc transaction type");
|
||||
}
|
||||
found_btc_tx = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert!(found_btc_tx);
|
||||
|
||||
channel.stop_chains_coordinator();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user