- 对于用户A,首先需要确定其拥有的所有UTXO集合,即用户A可以支配的所有比特币;
- A从这个集合中选取一个或者多个UTXO作为交易的输入,这些输入的金额之和为m(2+0.8+0.5=3.3 BTC)要大于需要支付的金额n(3 BTC);
- 用户A为交易设置两个输出,一个输出支付给B的地址,金额是n(3 BTC),另一个输出支付给A自己的一个找零地址,金额为m-n-fee(3.3-3-0.001=0.299 BTC)。用户的钱包通常由多个地址组成,一般情况下每个地址只使用一次,找零默认返回给一个新的地址;
- 等矿工将这笔交易打包上链进行确认后,B就可以收到这笔交易信息。因为区块的大小有上限(约1 MB),所以矿工会优先确认交易费率(fee_rate=fee/size )高的交易,以获取最高的手续费回报。我们可以在mempool看到实时的挖矿 transaction fee 的情况。如果我们在转账过程中如果想要最快进行确认,就可以选择高优先权(High Priority)或者自定义(custom)一个合适的交易费率;
- 整数符号:例如2099994106992659,表示该聪按照挖掘顺序所分配的序号。
- 十进制符号:例如3891094.16797,第一个数字表示挖掘该聪的区块高度,第二个数字表示聪在区块中的编号。
- 度数符号:例如3°111094′214″16797‴,第一个数字是周期,从0开始编号,第二个数字是减半纪元的区块索引,第三个数字是难度调整期间的区块索引,最后一个数字是区块中sat的索引。
- 百分比符号:例如99.99971949060254%,表示该聪在比特币供应量中的位置,以百分比表示。
- 名称:例如Satoshi。使用字符a到z对序号进行编码的名称。
- 挖矿产生10个聪,编号是[100 *, 110)。*其表示编号为第100到第109个聪存放在id为abc123的UTXO中,其所有者为用户A。
- 在A进行转账时,10个聪分成两份,每份5个聪。这里采用“先进先出”的原则,即聪的编号排序是按照它们在交易输出中的索引决定的。假设输出的顺序先是用户A,然后是用户B,那么用户A剩余5个聪的序号是[100, 105),存放在id为abc456的UTXO中,而用户B的5个聪的序号是[105, 110),存放在id为abc789的UTXO中。
- common普通级: 除区块第一个聪外的任何聪(总供应量为2100万亿)
- uncommon优良级: 每个区块的第一个聪(总供应量为6929999)
- rare稀有级: 每个难度调整期的第一个聪(总供应量为3437)
- epic史诗级: 每次减半后的第一个聪(总供应量为32)
- legendary传奇级:每个周期的第一个聪(总供应量为5)
- mythic神话级: 创世区块的第一个聪(总供应量为1)
- 首先,需要在提交交易中创建一个承诺到包含铭文内容的脚本的Taproot输出。存储的格式是Taproot,即前一笔交易的输出是P2TR (Pay-To-Taproot),后一笔交易的输入,在见证的Taproot script中嵌入特定格式的内容;首先将字符串ord 入栈,以消除铭文有其他用途的歧义。OP_PUSH 1指示下一次推送包含内容类型,并OP_PUSH 0指示后续数据推送包含内容本身。大型铭文必须使用多次数据推送,因为 taproot 的少数限制之一是单个数据推送不得大于 520 字节。此时铭文的数据已对应到交易输出的UTXO上,但是未被公开。
- 其次,需要在揭示交易中消费提交交易创建的那个输出。在这个阶段,通过将那笔铭文对应的UTXO作为输入,发起交易。此时,其对应的铭文内容被公开至全网。
- Uncompressed 形式,就是把两个坐标 x 和 y 直接连接在一起,再在前面加个 0x04 前缀即可;
- Compressed 形式,就是当 y 为偶数时,编码为 02 x,当 y 为奇数时,编码为 03 x;
- 对于版本为 0 的原生隔离见证地址,使用以前的 Bech32;
- 对于版本为 1(或者更高)的原生隔离见证地址,则使用新的 Bech32m。