使用 Ethers.js 簽章與檢驗
之前在 Solidity 智能合約 - ecrecover 簽章檢驗這篇文章,說明了智能合約如何檢驗簽章,這篇文章將說明如何使用 Ethers.js 來進行簽章與檢驗。本篇文章使用 Ethers.js 6.7.1 版本。 Signer後面內容要使用 Signer 物件,這邊先簡單說明如何取得。 私鑰 signer12345import { JsonRpcProvider, Wallet } from "ethers";const privateKey = '0x...'const provider = new JsonRpcProvider(url);const signer = new Wallet(privateKey, provider); 瀏覽器錢包 signer1234import { BrowserProvider } from "ethers";const provider = new BrowserProvider(window.ethereum);const sign ...
使用 Web3.js 簽章與檢驗
之前在 Solidity 智能合約 - ecrecover 簽章檢驗這篇文章,說明了智能合約如何檢驗簽章,這篇文章將說明如何使用 Web3.js 來進行簽章與檢驗。本篇文章使用 Web3.js 4.1.1 版本。 簽章Web3.js 提供幾種鏈下簽章的函式,本篇文章介紹下面三種: web3.eth.sign web3.eth.accounts.sign web3.personal.sign 關於 EIP-712 相關的方法,參考使用 Web3.js 進行 EIP-712 類型結構化資料簽名。 web3.eth.sign這是早期使用的函式,簽章不使用前綴。 1web3.eth.sign(message: Bytes, address: string): Promise<string> message: 簽署的內容,只能是 32 bytes 長度的二進位內容。可以是 Uint8Array 或 0x 開頭的字串。 address: 簽署人地址。 回傳值: 為 Promise 物件,內容為簽章。 Metamask 已經停用了這個功能,使用會在 console 看到錯誤訊息: ...
Solidity 智能合約 - 簽名延展性 (Signature Malleability)
之前的文章介紹了 ecrecover 的用法,不過內建的 ecrecover 存在簽名延展性 (Signature Malleability) 的問題。這篇文章將說明這個問題,以及如何解決。 問題拿之前文章的例子 1234567function test() external view returns(address) { bytes32 hash = 0xc1af4b94166cd32fc49b7b926cbb91ee421de2d04450e8ae57857b9b56ac7e53; uint8 v = 0x1b; bytes32 r = 0xe1077fb9321c187d8a43926896abac5455ce6add269e098f855ff059d6b846a3; bytes32 s = 0x56320be5f6d79c4d0e5583d6b9a2e50fae78f1fb5ff0553541e69c66dae2b2f8; return ecrecover(hash , v, r, s);} 上面的結果會得到簽署人為 0xDD980c315dFA ...
Solidity 智能合約 - ecrecover 簽章檢驗
簡介智能合約中的 ecrecover 函式,可以用來驗證錢包的的簽章。檢驗方可以在沒有簽章者私鑰的情況下,確認簽署者的身份。常用來作為鏈下授權,再由第三方上鏈使用或是單純的身份驗證。 函式1function ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address) hash: 是被簽章訊息的雜湊 v: 簽章的 v 值 r: 簽章的 r 值 s: 簽章的 s 值 回傳: 簽章者地址 範例例如下面的範例 123456789contract EcrecoverTest { function test() external view returns(address) { bytes32 hash = 0xc1af4b94166cd32fc49b7b926cbb91ee421de2d04450e8ae57857b9b56ac7e53; uint8 v = 0x1b; bytes32 r = 0xe1077fb9321c187d8a43926896abac5455ce ...
Stable Diffusion web UI 擴充功能 - Civitai Helper
簡介透過使用 Civitai Helper,我們可以直接下載安裝模型,不需要再開啟資料夾手動安裝。除此之外他也能自動下載預覽圖,提供在 Extrad Network 中瀏覽使用。 安裝在可用擴充搜索 Civitai 的文字,找到 Stable Diffusion Webui Civitai Helper 的項目,進行安裝與重啟。詳細參考之前的文章 Stable Diffusion 教學 - 擴充功能 (Extensions)。 安裝完成後會在上方出現 Civitai Helper 的頁籤 功能介紹Scan Models for Civitai這個功能是可以幫目前已經安裝的模型自動下載預覽圖。 Download Max Size Preview: 字面上意思應該是下載尺寸最大的圖來當預覽圖。 Skip NSFW Preview Images: 略過兒童不宜的圖片。 Model Types 對應 Extra Netowrk 中的四個頁籤,勾選要處理類別。 ti: Textual Inversion hyper: Hypernetworks ckp: Checkpoints lora: ...
Stable Diffusion 教學 - web UI Extra Networks
本篇文章介紹 Stable Diffusion web UI Extra Networks 的功能,包含子模型 Textual Inversion、Hypernetworks 和 Lora 的安裝和使用。 功能區塊在提示詞右邊區塊點擊中間的 🎴 圖示 會在下方展開 Extra Networkd 功能區塊 包含了四個子頁籤: Textual Inversion Hypernetworks Checkpoints Lora 以及右邊的搜索和排序等功能。 功能介紹Textual InversionTextual Inversion 分頁會列出目前已安裝的 Textual Inversion 子模型,一開始沒有安裝的時候會提示安裝路徑: 1stable-diffusion-webui/embeddings 安裝檔案到資料夾後,點擊右邊的 [Refresh] 按鈕可以重新整理來載入模組。 點擊想使用的 Textual Inversion,他會自動帶入到提示詞或反向提示詞使用,他會帶入到最後點擊的輸入框,再次點擊可以移除。 點擊右上角的圖示 [Edit metadata] 可以開啟編輯資訊 ...
Stable Diffusion 教學 - 擴充功能 (Extensions)
本篇文章介紹 Stable Diffusion web UI 擴充功能 (Extensions) 的功能和用法,透過這個頁面可以安裝不同額外的功能。本篇文章會說明如何安裝、停用和移除擴充等功能。 功能區塊擴充功能頁簽畫面如下 包含了四個子頁籤: Installed: 已安裝的擴充功能。 Available: 可用的擴充功能。 Install from URL: 從網址安裝 Backup/Restore: 備份還原設定。 功能介紹Installed這裡會列出已經安裝的擴充功能,其中會有一些內建 (built-in) 的擴充功能,其他的則為自己額外安裝的。 停用選取方塊表示是否啟用這個擴充功能,如果要停用可以取消選取。 另外右邊的 Disable all extensions 則可以一次停用特定的擴充: none: 不使用這功能 extra: 停用自己額外安裝的 all: 全部停用 當使用這個方式停用的時候,會無視選取方塊的設定。 套用有安裝新的擴充功能、更新或有修改停用設定之後要按 [Apply and restart UI] 才會有效果。 更新點擊 [Check fo ...
zkEVM 空投資訊整理
zkEVM 是其中一個 ZK Rollup 的 L2 方案,雖然已經有 MATIC 代幣,但據說可能也有空投機會,這邊研究並整理一份資料給大家參考。作為同樣 L2 ZK Rollup 的方案,策略就一樣參考之前的 zkSync 空投策略。 錢包使用 Metamask 即可。 BridgezkEVM 的 Bridge 頁面,建議在 $6 (0.0028 ETH) 以下時進行交互。 應用列出一些已經上主網的應用 名稱 發幣 類型 備註 Balancer O DEX Quickswap O DEX 0VIX X Lending 成本以太主網 操作 預估成本 Bridge 入金 0.0028 ETH 轉帳 ETH 0.0005 ETH 總計 0.0033 ETH zkEVM 操作 預估成本 0VIX Approve USDC 0.00003 ETH 0VIX Deposit USDC 0.00018 ETH Balancer Swap ETH to USDC 0.0001 ETH Balancer Add ETH Liq ...
Stable Diffusion 教學 - 檢查點 (Checkpoint)
本篇文章介紹 Stable Diffusion web UI 檢查點 (Checkpoint),包含格式、如何新增和模型下載平台 Civitai 。 簡介檢查點其實就是訓練過的模型,不同的模型能生成或擅長生成的圖片不同。有些擅長生成寫實風格,有些擅長生成動漫圖像,必須先選擇好模型才能正確生成。 檔案格式模型有兩種檔案格式: *.safetensors *.ckpt ckpt 檔案有安全性問題不建議使用,建議只使用 safetensors 格式就好。 浮點數模型根據浮點數也有分為以下兩種 Fp32: Single Precision,使用 32 位元浮點數,數檔案較大,精度較高。訓練模型建議使用。 Fp16: Half Precision,使用 16 位元浮點數,檔案較小。適合一般生圖使用。 安裝web UI 的模型存放位置為 1stable-diffusion-webui/models/Stable-diffusion 一開始預設只有 v1-5-pruned-emaonly.safetensors 如果要新增模型,直接下載放到這個資料夾下。例如:我們下載之前很流行的 AI 網紅 ...
Stable Diffusion 教學 - 採樣方法 (Sampling Method)
本篇文章介紹 Stable Diffusion web UI 採樣方法 (Sampling Method) 的功能和實驗結果,比較效率以及最後總結的建議。 簡介產生圖片的過程是迭代降噪的運算,而採樣方法就是降噪的方式。降噪比例會分配在每次採樣,所以步數越多,每次降噪比例越少。因此步數 1 的結果,不等於步數 20 的第一步的結果。以下是 Euler a 進行 20 步採樣的過程: 功能區塊 有以下功能區塊: 採樣方法 (Sampling method) 採樣步數 (Sampling steps) 功能介紹採樣方法有很多不同的方法可以使用,不同的方法會影響到產出的結果和執行的效率。目前有 20 種可以使用,後面以實際的測試來比較這些方法。 採樣步數生圖的時候採樣的次數,次數太少可能產生不出正常的圖片。這裡可以設定 0 - 150,一般建議是 20 次左右,不過不同的方法需要的步數不同,後面會有測試和比較。 實驗結果 25% 50% 100% ...