SHOWING: First 60
690144.btc#73,083,177text690162.btc#73,083,166text690063.btc#73,083,165texttransfer100.pizza#71,204,951brc-2080010.uniworlds#65,101,512text1haq1.uniworlds#65,036,058text#59,583,530gltf#59,426,408video Some(page_index - 1)
} else {
None
},
next_page: if (page_index + 1) * 100 <= num_inscriptions {
Some(page_index + 1)
} else {
None
},
})
}
}
impl PageContent for InscriptionsBlockHtml {
fn title(&self) -> String {
format!("Inscriptions in Block {0}", self.block)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn without_prev_and_next() {
assert_regex_match!(
InscriptionsBlockHtml {
block: 21,
inscriptions: vec![inscription_id(1), inscription_id(2)],
prev_block: None,
next_block: None,
prev_page: None,
next_page: None,
},
"
<h1>Inscriptions in <a href=/block/21>Block 21</a></h1>
<div class=thumbnails>
<a href=/inscription/1{64}i1><iframe .* src=/preview/1{64}i1></iframe></a>
<a href=/inscription/2{64}i2><iframe .* src=/preview/2{64}i2></iframe></a>
</div>
.*
prev
next
.*
"
#44,988,155text case(2016 * 2 * 08 + 0, "AAAAA");
case(2016 * 2 * 08 + 1, "AAAAA");
case(2016 * 2 * 09 - 1, "AAAAA");
case(2016 * 2 * 09 + 0, "AAAA");
case(2016 * 2 * 09 + 1, "AAAA");
case(2016 * 2 * 10 - 1, "AAAA");
case(2016 * 2 * 10 + 0, "AAA");
case(2016 * 2 * 10 + 1, "AAA");
case(2016 * 2 * 11 - 1, "AAA");
case(2016 * 2 * 11 + 0, "AA");
case(2016 * 2 * 11 + 1, "AA");
case(2016 * 2 * 12 - 1, "AA");
case(2016 * 2 * 12 + 0, "A");
case(2016 * 2 * 12 + 1, "A");
case(2016 * 2 * 13 - 1, "A");
case(2016 * 2 * 13 + 0, "A");
case(2016 * 2 * 13 + 1, "A");
case(u32::max_value(), "A");
}
#[test]
fn serde() {
let rune = Rune(0);
let json = "\"A\"";
assert_eq!(serde_json::to_string(&rune).unwrap(), json);
assert_eq!(serde_json::from_str::<Rune>(json).unwrap(), rune);
}
}
#44,987,908text
rpc_server.mine_blocks(1);
let response = TestServer::spawn_with_server_args(&rpc_server, &[], &["--enable-json-api"])
.json_request("/block/0");
assert_eq!(response.status(), StatusCode::OK);
let block_json: BlockJson = serde_json::from_str(&response.text().unwrap()).unwrap();
assert_eq!(
block_json,
BlockJson {
hash: "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
.parse::<BlockHash>()
.unwrap(),
target: "00000000ffff0000000000000000000000000000000000000000000000000000"
.parse::<BlockHash>()
.unwrap(),
best_height: 1,
height: 0,
inscriptions: vec![],
}
);
}
#44,987,894text }
let script = builder
.push_opcode(bitcoin::opcodes::all::OP_ENDIF)
.into_script();
bitcoin::Witness::from_slice(&[script.into_bytes(), Vec::new()])
}
fn create_wallet(rpc_server: &test_bitcoincore_rpc::Handle) {
CommandBuilder::new(format!("--chain {} wallet create", rpc_server.network()))
.rpc_server(rpc_server)
.run_and_deserialize_output::<ord::subcommand::wallet::create::Output>();
}
mod command_builder;
mod expected;
mod test_server;
mod core;
mod decode;
mod epochs;
mod find;
mod index;
mod info;
mod json_api;
mod list;
mod parse;
mod server;
mod subsidy;
mod supply;
mod traits;
mod version;
mod wallet;
#44,987,892textuse {super::*, crate::wallet::Wallet, std::collections::BTreeSet};
#[derive(Serialize, Deserialize)]
pub struct CardinalUtxo {
pub output: OutPoint,
pub amount: u64,
}
pub(crate) fn run(options: Options) -> SubcommandResult {
let index = Index::open(&options)?;
index.update()?;
let unspent_outputs = index.get_unspent_outputs(Wallet::load(&options)?)?;
let inscribed_utxos = index
.get_inscriptions(&unspent_outputs)?
.keys()
.map(|satpoint| satpoint.outpoint)
.collect::<BTreeSet<OutPoint>>();
let cardinal_utxos = unspent_outputs
.iter()
.filter_map(|(output, amount)| {
if inscribed_utxos.contains(output) {
None
} else {
Some(CardinalUtxo {
output: *output,
amount: amount.to_sat(),
})
}
})
.collect::<Vec<CardinalUtxo>>();
Ok(Box::new(cardinal_utxos))
}
#44,987,803text child_output.inscriptions[0].id
),
);
ord_server.assert_response_regex(
format!("/inscription/{}", child_output.inscriptions[0].id),
format!(
".*<dt>parent</dt>.*<a class=monospace href=/inscription/{}>.*",
child_output.parent.unwrap()
),
);
}
#[test]
fn reinscribe_with_flag() {
let rpc_server = test_bitcoincore_rpc::spawn();
rpc_server.mine_blocks(1);
assert_eq!(rpc_server.descriptors().len(), 0);
create_wallet(&rpc_server);
let inscribe = CommandBuilder::new("wallet inscribe --file tulip.png --fee-rate 5.0 ")
.write("tulip.png", [1; 520])
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Inscribe>();
assert_eq!(rpc_server.descriptors().len(), 3);
let txid = rpc_server.mine_blocks(1)[0].txdata[2].txid();
let ord_server = TestServer::spawn_with_args(&rpc_server, &[]);
let request = ord_server.request(format!("/content/{}", inscribe.inscriptions[0].id));
assert_eq!(request.status(), 200);
let reinscribe = CommandBuilder::new(format!(
#44,986,208text .write("inscription.txt", "Hello World")
.write(
"batch.yaml",
"mode: shared-output\ninscriptions:\n- file: inscription.txt\n metadata: 123\n metaprotocol: foo",
)
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Inscribe>();
rpc_server.mine_blocks(1);
assert_eq!(rpc_server.descriptors().len(), 3);
let ord_server = TestServer::spawn_with_args(&rpc_server, &[]);
let request = ord_server.request(format!("/content/{}", output.inscriptions[0].id));
assert_eq!(request.status(), 200);
assert_eq!(
request.headers().get("content-type").unwrap(),
"text/plain;charset=utf-8"
);
assert_eq!(request.text().unwrap(), "Hello World");
ord_server.assert_response_regex(
format!("/inscription/{}", output.inscriptions[0].id),
r".*<dt>metadata</dt>\s*<dd>\n 123\n </dd>.*<dt>metaprotocol</dt>\s*<dd>foo</dd>.*",
);
}
#[test]
fn batch_inscribe_with_multiple_inscriptions() {
let rpc_server = test_bitcoincore_rpc::spawn();
rpc_server.mine_blocks(1);
#44,986,206textname = "event-listener"
version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae"
dependencies = [
"concurrent-queue",
"parking",
"pin-project-lite",
]
[[package]]
name = "event-listener-strategy"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
dependencies = [
"event-listener 4.0.0",
"pin-project-lite",
]
[[package]]
name = "executable-path"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ebc5a6d89e3c90b84e8f33c8737933dda8f1c106b5415900b38b9d433841478"
[[package]]
name = "fastrand"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"#44,986,107textdmt-mint.magic#44,746,764tapdmt-mint.magic#44,746,669tap146572.bitmap#13,309,286text