SHOWING: First 60
0xA2, 0x63, b'f', b'o', b'o', 0x63, b'b', b'a', b'r', 0x63, b'b', b'a', b'z', 0x01,
],
)
.rpc_server(&rpc_server)
.run_and_deserialize_output();
let inscription = inscriptions[0].id;
rpc_server.mine_blocks(1);
let ord_server = TestServer::spawn_with_args(&rpc_server, &[]);
ord_server.assert_response_regex(
format!("/inscription/{inscription}"),
".*<dt>metadata</dt>.*<dl><dt>foo</dt><dd>bar</dd><dt>baz</dt><dd>1</dd></dl>.*",
);
}
#[test]
fn error_message_when_parsing_json_metadata_is_reasonable() {
CommandBuilder::new(
"wallet inscribe --fee-rate 1 --json-metadata metadata.json --file content.png",
)
.write("content.png", [1; 520])
.write("metadata.json", "{")
.stderr_regex(".*failed to parse JSON metadata.*")
.expected_exit_code(1)
.run_and_extract_stdout();
}
#[test]
fn error_message_when_parsing_cbor_metadata_is_reasonable() {
CommandBuilder::new(
"wallet inscribe --fee-rate 1 --cbor-metadata metadata.cbor --file content.png",
)
.write("content.png", [1; 520])
#44,989,616textuse {super::*, ord::subcommand::epochs::Output, ord::Sat};
#[test]
fn empty() {
assert_eq!(
CommandBuilder::new("epochs").run_and_deserialize_output::<Output>(),
Output {
starting_sats: vec![
Sat(0),
Sat(1050000000000000),
Sat(1575000000000000),
Sat(1837500000000000),
Sat(1968750000000000),
Sat(2034375000000000),
Sat(2067187500000000),
Sat(2083593750000000),
Sat(2091796875000000),
Sat(2095898437500000),
Sat(2097949218750000),
Sat(2098974609270000),
Sat(2099487304530000),
Sat(2099743652160000),
Sat(2099871825870000),
Sat(2099935912620000),
Sat(2099967955890000),
Sat(2099983977420000),
Sat(2099991988080000),
Sat(2099995993410000),
Sat(2099997995970000),
Sat(2099998997250000),
Sat(2099999497890000),
Sat(2099999748210000),
Sat(2099999873370000),
Sat(2099999935950000),
Sat(2099999967240000),
#44,989,373text<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" fill="#a1adb8"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"/></svg>
#44,989,005text<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="#a1adb8"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/></svg>
#44,988,316text
let index_path = tempdir.path().join("foo.redb");
CommandBuilder::new(format!("--index {} index update", index_path.display()))
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Empty>();
assert!(index_path.is_file());
CommandBuilder::new(format!("--index {} index update", index_path.display()))
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Empty>();
}
#[test]
fn index_runs_with_rpc_user_and_pass_as_env_vars() {
let rpc_server = test_bitcoincore_rpc::spawn();
rpc_server.mine_blocks(1);
let tempdir = TempDir::new().unwrap();
let ord = Command::new(executable_path("ord"))
.args(
format!(
"--rpc-url {} --bitcoin-data-dir {} --data-dir {} index update",
rpc_server.url(),
tempdir.path().display(),
tempdir.path().display()
)
.to_args(),
)
.env("ORD_BITCOIN_RPC_PASS", "bar")
.env("ORD_BITCOIN_RPC_USER", "foo")
.env("ORD_INTEGRATION_TEST", "1")
.current_dir(&tempdir)
.spawn()
.unwrap();
#44,987,378text"fermentum\n"
" dolor et luctus euismod.\n"
"\n"
" - file: token.json\n"
" metaprotocol: brc-20\n"
"\n"
" - file: tulip.png\n"
" metadata:\n"
" author: Satoshi Nakamoto\n"
"```"
msgstr ""
#: src/guides/sat-hunting.md:4
msgid ""
"_This guide is out of date. Since it was written, the `ord` binary was "
"changed to only build the full satoshi index when the `--index-sats` flag is "
"supplied. Additionally, `ord` now has a built-in wallet that wraps a Bitcoin "
"Core wallet. See `ord wallet --help`._"
msgstr ""
"_本指南已过时。自编写以来,“ord”安装文件已更改仅当提供“--index-sats”标志时才"
"构建完整的聪索引。此外,“ord”现在有一个内置钱包,其中包含比特币核心钱包。请参"
"阅`ord wallet --help`。_"
#: src/guides/sat-hunting.md:9
msgid ""
"Ordinal hunting is difficult but rewarding. The feeling of owning a wallet "
"full of UTXOs, redolent with the scent of rare and exotic sats, is beyond "
"compare."
msgstr ""
#: src/guides/sat-hunting.md:12
msgid ""
"Ordinals are numbers for satoshis. Every satoshi has an ordinal number and "
"every ordinal number has a satoshi."
#44,987,372text <a href="/sat/5°0′0″0‴"><line class="legendary" y1="-16" y2="-15" stroke-width="0.5" transform="rotate(327.27272727272725)"><title>5th Conjunction</title></line></a>
<a href="/sat/5°0′336″0‴"><line class="epic" y1="-16" y2="-15" stroke-width="0.3" transform="rotate(338.1818181818182)"><title>31st Halving</title></line></a>
<a href="/sat/5°0′672″0‴"><line class="epic" y1="-16" y2="-15" stroke-width="0.3" transform="rotate(349.0909090909091)"><title>32nd Halving</title></line></a>
<line y2="-9" transform="rotate({{self.hour}})"><title>Subsidy</title></line>
<line y2="-13" stroke-width="0.6" transform="rotate({{self.minute}})"><title>Epoch</title></line>
<line y2="-16" stroke="#d00505" stroke-width="0.2" transform="rotate({{self.second}})"><title>Period</title></line>
<circle r="0.7" stroke="#d00505" stroke-width="0.3"/>
</svg>
#44,986,400text