SHOWING: First 60
0#50,026,556text0#50,026,554text0#50,026,553text0#50,026,552text0#50,026,549texttransfer1,100,000,000,000.shid#48,585,108brc-20cbrc-20:mint:BORD=1000#47,090,285textcbrc-20:mint:BORD=1000#47,090,284textcbrc-20:mint:BORD=1000#47,088,377textcbrc-20:mint:BORD=1000#47,088,364text let acme_cache = if let Some(acme_cache) = acme_cache {
acme_cache.clone()
} else {
options.data_dir()?.join("acme-cache")
};
Ok(acme_cache)
}
fn acme_domains(&self) -> Result<Vec<String>> {
if !self.acme_domain.is_empty() {
Ok(self.acme_domain.clone())
} else {
Ok(vec![System::new()
.host_name()
.ok_or(anyhow!("no hostname found"))?])
}
}
fn http_port(&self) -> Option<u16> {
if self.http || self.http_port.is_some() || (self.https_port.is_none() && !self.https) {
Some(self.http_port.unwrap_or(80))
} else {
None
}
}
fn https_port(&self) -> Option<u16> {
if self.https || self.https_port.is_some() {
Some(self.https_port.unwrap_or(443))
} else {
None
}
}
fn acceptor(&self, options: &Options) -> Result<AxumAcceptor> {
let config = AcmeConfig::new(self.acme_domains()?)
.contact(&self.acme_contact)
.cache_option(Some(DirCache::new(Self::acme_cache(
self.acme_cache.as_ref(),#45,004,036text
#[test]
fn unknown_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(1, 0, 0, inscription("text/foo", "hello").to_witness())],
..Default::default()
});
server.mine_blocks(1);
server.assert_response_csp(
format!("/preview/{}", InscriptionId { txid, index: 0 }),
StatusCode::OK,
"default-src 'self'",
fs::read_to_string("templates/preview-unknown.html").unwrap(),
);
}
#[test]
fn video_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(1, 0, 0, inscription("video/webm", "hello").to_witness())],
..Default::default()
});
let inscription_id = InscriptionId { txid, index: 0 };
server.mine_blocks(1);
server.assert_response_regex(
format!("/preview/{inscription_id}"),
StatusCode::OK,#45,003,881text };
let unsigned_transaction = TransactionBuilder::new(
satpoint,
inscriptions,
unspent_outputs,
locked_outputs,
address.clone(),
change,
self.fee_rate,
postage,
)
.build_transaction()?;
let signed_tx = client
.sign_raw_transaction_with_wallet(&unsigned_transaction, None, None)?
.hex;
let txid = client.send_raw_transaction(&signed_tx)?;
Ok(Box::new(Output { transaction: txid }))
}
fn lock_inscriptions(
client: &Client,
inscriptions: BTreeMap<SatPoint, InscriptionId>,
unspent_outputs: BTreeMap<bitcoin::OutPoint, bitcoin::Amount>,
) -> Result {
let all_inscription_outputs = inscriptions
.keys()
.map(|satpoint| satpoint.outpoint)
.collect::<HashSet<OutPoint>>();
let wallet_inscription_outputs = unspent_outputs
.keys()
.filter(|utxo| all_inscription_outputs.contains(utxo))
.cloned()
.collect::<Vec<OutPoint>>();
if !client.lock_unspent(&wallet_inscription_outputs)? {#45,003,836textmint10,000,000.trvs#44,879,689brc-20mint10,000,000.trvs#44,879,679brc-20mint10,000,000.trvs#44,879,677brc-20mint10,000,000.trvs#44,879,676brc-20mint10,000,000.trvs#44,879,645brc-20mint10,000,000.trvs#44,879,621brc-20