在這篇文章中,我會以.stats 域名的鑄造為例,帶你走一遍完整的BTC NFT 鑄造流程。在延展閱讀處,會稍微解釋下閃電網絡、Taproot 地址和 Ordinals 協議。
需要哪些前期準備
-
下載 Xverse 錢包,我們後面會用它來存儲NFT,因為它能夠正確識別Ordinals 協議的資產。
下載 Alby 瀏覽器插件錢包,用來處理閃電網絡交易,這款錢包的體驗相當不錯。
-
準備好自己的 OKX 賬號,我們要用它提取閃電網絡的BTC 到自己的錢包。
接收BTC NFT 的重要前提是你的錢包支持Taproot 地址格式,它們通常以 bc1p 開頭,這是重要的識別方式。這是目前我自己用的最順手的組合,如果你習慣使用其他錢包,如 Bluewallet、Muun 等,同樣可行。
截止目前,OneKey 錢包還沒有支持Taproot 地址和閃電網絡,但我看到官方已經提過,估計很快會上。
我需要跑Bitcoin 全節點嗎
-
不需要,現在已有很多免節點的替代鑄造工具。
-
但是,如果你想更深入參與BTC Ordinals NFT 市場,並且將手續費降到最低,建議你去 Bitcoin Core 下載最新的錢包。
-
下載好後按下圖修改設置,不要修剪節點,不然你會白同步,Ordinal 是要追溯到整個BTC 區塊的第一筆交易的。
-
同時,最好將BTC 的區塊數據放到至少1TB容量的外置硬盤,不然會很佔你的電腦空間,目前整個BTC 網絡的數據大約500GB。
-
如果你對自己搭節點不感興趣,只想快點Mint,那這裡跳過就好,也不用下Bitcoin Core 錢包了。
Sparrow 錢包是必需的嗎?
-
不是,那是一個月前的做法。
-
Sparrow 是個很棒的錢包,但它無法顯示NFT,並且操作門檻高,不建議入門用戶使用,高階用戶隨意。
給錢包氪金
-
把你的Alby 錢包準備好,怎麼使用這裡不贅述。
-
從你的OKX 提一些BTC 到Alby,不要提多,最多幾百美金等額的BTC 足矣,網絡選擇:BTC-閃電網絡。
-
再從你的OKX 提一些BTC 到Xverse,Xverse 不支持閃電網絡,普通提現就可以。
-
現在你的兩個錢包都有BTC 了,它們大概長這樣:
選擇鑄造工具:
-
https://ordinalsbot.com/
-
https://gamma.io/
-
https://unisat.io/inscribe
其實,在BTC 鏈上鑄造NFT 不叫Mint,叫Inscribe,銘刻的意思。不過在ETH 市場大家已經很熟悉Mint 了,所以下面我還是會用Mint 來指代鑄造這個過程。
目前最好用的Mint 工具目前就是上面3個,下面我來以Gamma 為例,帶大家鑄造一個.sats 域名。
.sats 是BTC 網絡上類似ENS 的項目,沒有自己的代幣,沒有預挖,鑄造是免費的。我沒有囤積.stats 域名,只鑄造了極少量(不足20個)參與。
根據其文檔,鑄造是要把下圖這個文本刻到BTC 主網上。
那我要怎麼操作才能把它們鑄造上去呢,顯然不可能通過BTC 轉賬留言,對吧?
這時候我們可以選擇上面提到的鑄造工具,它們其實沒有什麼特別,只是將BTC 網絡的鑄造過程可視化,讓用戶更容易上手。
訪問 https://gamma.io/ordinals
選擇Text 文本
把.stats 文檔裡寫的文本貼過來,name 字段換成你要的域名,如:abc.stats
輕觸繼續,選擇費率,一般我們選Higher fee 以保證鑄造盡快成功。
注意,每次鑄造NFT,Gamma 都要收你5.7刀左右的服務費,還是比較貴的。 unisat 會便宜一些,操作上有細微區別。總之,我們先學會用Gamma 鑄造,然後自己再去嘗試其他工具。
下面這個步驟最為關鍵:接收地址必須填Taproot 格式的(以bc1p 開頭),否則你的NFT 可能會丟失。此外,郵件最好填一下,Gamma 會將訂單信息推給你。
那麼, Taproot 地址上哪裡找呢?
還記得我們在文章開頭下載的Xverse 錢包嗎。按照下圖,輕觸按鈕1訪問NFT 面板,接著,輕觸按鈕2 接收,選擇Taproot 地址(bc1p開頭),把這個地址複製到上面的Gamma 地址欄
按提示繼續,你需要勾選下方的使用協議。
緊接著,Gamma 會生成訂單。在這個訂單頁面,你可以看到有兩個要素:
-
BTC 金額
-
收幣地址
按照頁面指示,將正確的金額轉到對應的地址,確保無誤,然後等待Gamma 鑄造完成。
稍等片刻,通常10-30分鐘後(BTC 網絡需要出塊確認),你就可以在自己的Xverse 錢包看到BTC NFT 了。
至此,你已經完成了BTC 網絡上.sats 域名NFT 的鑄造,比預想中的簡單對嗎?我們繼續。
如何確定域名有沒有被註冊
你可以使用這個非正式的API 接口查詢,https://api.sats.id/names/abc.sats
將鏈接末尾的abc.sats 換成你想要註冊的域名,如:123.stats
那麼你就能得到如下鏈接:
https://api.sats.id/names/123.sats
如果返回信息的信息像這樣,那就說明這個域名尚未被註冊:
否則,就是已經被註冊了。
自動查詢.stats 域名
手動查詢仍然比較繁瑣,你可以通過腳本程序查找可註冊的域名,這樣效率會更高(比如你想要註冊全部可用的10K 數字域名),以下是代碼示意,你可以在自己的電腦上運行:
// 定義接口地址
const apiUrl = “https://api.sats.id/names/”;
// 定義循環延遲時間(單位:毫秒)
const delay = 1000;
// 生成隨機不重複數字的函數
function getRandomNumbers(count, min, max) {
if (count > max – min + 1) {
throw new Error(“不能生成足夠的不重複數字”);
}
const numbers = new Set();
while (numbers.size numbers.add(Math.floor(Math.random() * (max – min + 1)) + min);
}
return […numbers];
}
// 定義循環函數
function loop(numbers, index) {
const number = numbers[index];
// 構造接口地址
const url = apiUrl + number + “.sats”;
// 調用接口
fetch(url)
.then(response => response.text())
.then(data => {
// 判斷返回內容是否包含指定字符串
if (data.includes(“.sats not found”)) {
console.log(“找到了:” + url);
}
})
.catch(error => {
console.log(“請求出錯:” + url);
})
.finally(() => {
// 延遲1秒後執行下一次循環
if (index setTimeout(() => loop(numbers, index + 1), delay);
}
});
}
// 生成隨機不重複數字
const numbers = getRandomNumbers(9999, 1, 9999);
// 啟動循環
loop(numbers, 0);
除了數字域名,你也可以窮舉所有可註冊的字母域名,代碼示意如下:
const letters = [
“n”,
“a”,
“s”,
“d”,
“t”,
“i”,
“c”,
“o”,
“e”,
“m”,
“p”,
“b”,
“x”,
“q”,
“z”,
“f”,
“g”,
“h”,
“j”,
“k”,
“l”,
“r”,
“u”,
“v”,
“w”,
“y”,
];
const urls = [];
// 生成所有可能的URL
letters.forEach((l1) => {
letters.forEach((l2) => {
letters.forEach((l3) => {
const url = `https://api.sats.id/names/${l1}${l2}${l3}.sats`;
urls.push(url);
});
});
});
// 隨機排序URL 數組
urls.sort(() => Math.random() – 0.5);
// 發送請求的函數
const fetchUrl = async (url) => {
try {
const response = await fetch(url);
const text = await response.text();
if (text.includes(“.sats not found”)) {
console.log(`找到了:${url}`);
}
} catch (error) {
// 忽略錯誤
}
};
// 並發發起請求
const concurrency = 20;
let index = 0;
const interval = setInterval(() => {
for (let i = 0; i const url = urls[index];
fetchUrl(url);
index++;
if (index >= urls.length) {
clearInterval(interval);
break;
}
}
}, 1000);
運行這些JS 腳本很容易,你只要在自己的瀏覽器任意位置點擊Inspect(檢查),並在Console(控制台)複製/粘貼代碼就可以。符合條件的域名會自動提示你。
我們先前下載的Alby 有什麼用
-
Alby 是閃電網絡錢包,只支持閃電網絡轉賬。
-
上面提到了ordinalsbot 這個工具,它支持使用閃電網絡付款,還支持批量鑄造。
-
這樣你就不用等待網絡長達20-30分鐘的確認,更快搶到你想要的NFT。
-
在你學會如何使用Gamma 後,就可以嘗試這些更複雜一些的工具來探索BTC NFT。
關於閃電網絡、Taproot 和Ordinals 協議
閃電網絡(Lightning Network)
閃電網絡是一種基於比特幣技術的二層協議,可以加快交易速度和擴展性。它通過創建多個支付通道,使用戶能夠實時、高效、低成本地進行點對點交易,從而避免了需要等待礦工驗證和打包的過程。這種網絡類似於數字錢包,用戶可以在其中創建支付通道並存入比特幣,在通道內與其他用戶進行交易,這些交易不需要寫入區塊鏈。當用戶關閉支付通道並提取比特幣時,最終餘額將被寫入區塊鏈。
Taproot 地址
Taproot 是比特幣網絡的一種新型地址格式,是最新的升級方案之一。它採用了一種新的地址編碼方式,可以提供更好的隱私、安全和可擴展性。 Taproot 地址可以隱藏多個公鑰或腳本,使得交易只展示最終使用的公鑰或腳本,保護了用戶隱私;它還可以被用於多種不同的交易類型,並且使用Taproot 地址的交易規模通常比傳統的交易規模要小,從而降低了交易費用。另外,Taproot 地址還可以減少腳本的使用,降低區塊鏈大小和交易的複雜性,提高比特幣網絡的可擴展性。
Ordinals 協議
這其實是 Casey Rodarmor 創辦的,使用序數理論來標記和跟踪“註冊”,即嵌入在區塊鏈中的數據/內容:
序數是定義系列中位置的任何數字(例如,第一,第二,第三)。在比特幣的情況下,Ordinal 是一個特定Satoshi 的未使用交易輸出(UTXO),其中包含一個包含內容(例如文本、圖像或MP3)的“註冊”。已註冊的Satoshi 被設置為特殊交易,以便用戶可以識別和跟踪它們。
事實上,這個解決方案早在2012年就在比特幣論壇上提出了。 Ordinals NFT 有一個有趣的點,它們不使用比特幣的OP_RETURN 字段。這個命令允許用戶在鏈上提交任意數據。
Taproot 也很關鍵,它放寬了這些要求,完全取消了數據限制,因此理論上你可以鑄造一個佔據整個區塊數據空間的4MB 大小的NFT。
我常用的BTC NFT 工具
-
https://ordinalsbot.com/
-
https://gamma.io/
-
https://dune.com/dataalways/ordinals
-
https://ordinals.com/
-
https://unisat.io/inscribe
-
https://ordinals.market/
-
https://ordlists.com/numbers
-
https://ordinalswallet.com/
特別感謝
我在了解BTC Ordinals 協議的過程中,從 @李歡 和 @xiyu 身上學到很多。你可以關注他們的推特,他們經常分享BTC 的知識和見解。同時,非常感謝@zuozhuo 提工的域名查詢腳本,十分好用。
祝各位鑄造愉快。