What Is ERC-20?

ERC-20 是以太坊上的一種標準協議,用於創建和交換可互操作的代幣。它定義了一組規則和函數,使開發者能夠在以太坊區塊鏈上創建代幣,並在兼容 ERC-20 的錢包和交易所中進行交易。 TL;DR 發行 ERC-20 代幣本身不難,如何讓代幣具有價值跟共識性,讓別人認同其價值、營銷手段跟生態系才是關鍵,在做任何投資和操作一定要 DYOR 跟知道其原理和遊戲規則再進場,畢竟生成一個空氣或土狗代幣不用到 2 分鐘。 定義 ERC-20是以太坊的一種協議(智能合約),用於約定和規範代幣的發行。目前主流代幣都是基於這個協議進行開發的,當然比較早期的代幣沒有,而額外延伸了 Wrapped 的方式,下面會說明 WETH 與 ETH 之間的關係。 WETH vs ETH 作為擁有智能合約實現層的 Ethereum 鏈卻沒有自己的 ERC-20 代幣(token) 而 ETH 卻是作為加密貨幣的存在真的不好進行交易,所以衍伸了打包代幣,其目的都是將貨幣或沒有在這條鏈上發行的代幣進行打包,方便使用 ERC-20 標準進行投資與交易。所以後續看到 wrapped 絕大部分都是為了這個目的,可以透過 DEX 進行交換打包代幣等方式換取。 實現 ERC-20協議規定了代幣必須實現的6個函數,包括totalSupply、balanceOf、allowance、transfer、approve和transferFrom。這些函數定義了代幣的基本屬性和行為,使得開發者可以在以太坊上創建自己的代幣,並且可以方便地與其他應用程序集成。 totalSupply:獲取代幣的總供應量。 balanceOf:獲取指定帳戶的代幣餘額。 allowance:獲取擁有者授權給另一個帳戶的代幣數量。 transfer:從當前帳戶轉移代幣到另一個帳戶。 approve:授權另一個帳戶可以從當前帳戶轉移代幣。 transferFrom:從一個帳戶轉移代幣到另一個帳戶,前提是該帳戶已經得到了擁有者的授權。 但最主要還是實現核心幾個介面就是定義為 ERC-20: There are a few core contracts that implement the behavior specified in the EIP: IERC20: the interface all ERC20 implementations should conform to....

May 12, 2023 · Yish

What Is BRC-20?

最近幣圈很火紅的 BRC-20 究竟是什麼東西,帶來了何種價值與改進,Ordinals 協議又是什麼,以及對於未來的預測想法。 TL;DR BRC-20 是基於 Ordinals 協議的代幣標準(由社群定義,非認證),Ordinals 協議是讓 satoshi 有編號序列化(使得 satoshi 可以附加而外資料),而BRC-20 則是產生出一段 payload 寫入到 satoshi 內,這個動作稱為銘文(inscribe)。目前所有協議和標準都為實驗性質,然而被炒作跟各種 fomo 導致目前交易量大增讓 BTC 交易費拉高,進而拖垮 BTC 交易速度。 Ordinals 協議是什麼 由軟體工程師 Casey Rodarmor 於比特幣主網上打造的協議 Ordinals,於今年 1 月 21 日正式亮相。它是一個用於編號比特幣的最小單位 Satoshi 的系統,Satoshi 會依照挖掘和轉移的順序進行編號,故將該協議取名為 Ordinals (序數)。 Ordinals 可以讓用戶透過附加額外資料的方式(除了 JPEG 之外,PDF、影片和音檔內容也可以拿來創建 Ordinals。)使個別 Satoshi 成為獨一無二的 NFT。原文連結 Satoshi 是比特幣的最小單位,為 0.00000001 顆比特幣,也就是說 1 顆比特幣為 1 億顆 Satoshi。 然後發生了一件大事… Updated the gitbook to address common questions and my intentions for the experiment going forward....

May 12, 2023 · Yish

Google Extension With ChatGPT

本篇文章是透過 ChatGPT 產生後經過實際操作正確運行,善用工具可以協助更快速時間想法與概念。 我的目標與動作描述: 請幫我開發一個google extension v3 點 extension icon 會跳出一個html並且在上下左右邊距大概100px 按鈕在正中間 “取得當前網址” 點了之後會取得當前網址並且 alert 出來 這邊有兩個知識點,由於我在這之前已經有開發過 google extension 經驗,所以大概知道結構邏輯; 實際細節已經有點遺忘了,僅記得是透過 append 和 permission 型態: minifest 來宣告,也就是說在請 ChatGPT 協助之前先行的知識還是要有的,了解的越清楚實作與協作起來會更快更精準。 建立 manifest.json 檔案 manifest.json 檔案用來定義擴充功能的設定,包括擴充功能名稱、版本、圖示、權限等等。請參考以下範例: { "name": "Get Current URL", "version": "1.0", "description": "A Google Chrome Extension to get the current URL of the active tab", "manifest_version": 3, "action": { "default_popup": "popup.html" }, "permissions": ["activeTab"] } 建立 popup.html 檔案 popup.html 檔案用來定義擴充功能點擊 icon 後彈出的視窗,包括取得當前網址的按鈕。請參考以下範例:...

April 24, 2023 · Yish

Make More Things the Same

前幾天在網上看到一種設計方式,闡述了一種讓代碼看起來跟擴展性高的一種思維方式,作者透過實際例子描述如何從一開始的設計演化到最後的概念,這樣子的設計概念其實充滿在 Laravel 當中,我認為是相當值得學習的一個作法與思維,以下為實際演示和相關我理解的註解: 首先作者提出了一種原有的代碼設計思路,這邊可以看到示例代碼,用來處理相關 throw 和 report 的機制: class Flaky { protected $throw = true; public function reportFailures() { $this->throw = false; } public function throwFailures() { $this->throw = true; } protected function handle(Exception $e) { $this->throw ? throw $e : report($e); } } 這邊是一個很基礎的設計,可以看到透過呼叫 method 來改變 throw property 來改變最後 handle 的動作。然而當有新的方法,例如 logFailures,就必須調整兩個部分: 新增 logFailures 方法 調整 handle 邏輯 這樣會導致會大幅度去調整原有邏輯跟方法,而沒有一個通用的方法,而且新增的邏輯是有機會跟原本方法不一樣,因此作者透過步驟去分析跟設計,而這樣子的作法也是 Laravel 代碼庫中的實踐方法: class Flaky { protected $handleFailure; public function __construct() { $this->throwFailures(); } public function handleFailures($callback) { // 這邊透過 callback 的行為來增加代碼彈性,使其作用域在內部 $this->handleFailure = $callback; } public function reportFailures() { $this->handleFailures(function($e) { report($e); }); } public function throwFailures() { $this->handleFailures(function($e) { throw $e; }); } // new method public function logFailures() { $this->handleFailures(function($e) { logger($e) }); } protected function handle(Exception $e) { call_user_func($this->handleFailure, $e); } } 透過 handle 去 call handleFailure,除了內部提供的 reportFailures, throwFailures, logFailures,也可以直接呼叫 handleFailure 進行自定義方法:...

March 28, 2023 · Yish

The Imagination of the Future

最近 ChatGPT 的高速發展和有許多文章開始在討論:人們還有什麼工作能夠做,讓自己陷入一個焦慮的狀態,但我想這是一種人們對於新興科技的一種恐懼感,這是十分正常的現象,以下將描述我對於 2023 年以及未來科技的看法。 未來會是以 web3 方式邁進(區塊鏈/資產自有/AI) 加密貨幣將會主導金融與經濟成為法定貨幣之外的共識性資產 AI 技術將會輔助人們更快完成需求與目的,作為一個工具或是副駕駛存在 NFT 不會消散,而是會以其他形式存活並更廣泛的運用 USDT 會持續在 stablecoin 有影響力,而 USDC 將會因為監管而失去控制權 學習程式語言變為一種學習思維方式,而不是寫得多就有價值 線上課程將會轉為傳導思維方式而不是細節實現 軟體工程師將會淘汰大部分不適任的碼農,而留下真正熱愛的人 web3 將會是微軟為主軸,google 失去了 web 統治權 bitcoin 將會成為穩定儲備 紅利將會留給已經看到區塊鏈與 AI 技術並先行進入的先行者 AI 會取代大部分客服回答問題,而只會留下幾個需要客製化的客服處理細節 eth 或是其他側鏈會成為線上資產的主要流通價值 開發將會回歸數據層,作為中間件會做好對應收集數據的工作 大部分商業應用不會自己訓練模型,而是使用付費的模型處理 大部分 altcoins 會變成毫無價值 筆記軟體和個人工具會迎來下一波高峰,因為人們開始專注自我學習,並且透過 AI 等工具輔助 公司軟體會逐漸從 google 轉移到 微軟,因為有強大的 AI 輔助與整合 支付行為將會把虛擬貨幣也加入,全世界將迎來統一支付貨幣的年代 AR 技術會迎來一次應用; VR 技術將會成為元宇宙通行證 未來最值得投資的項目:英語

March 24, 2023 · Yish

Pest

Pest 對我來說提供了更便捷的測試方式和直譯式的寫法,類似 JS 相關的測試框架,同時又保留了 Laravel 和 PHP 龐大的輔助函數和功能。 official laracasts 主結構 $ composer require pestphp/pest --dev --with-all-dependencies $ ./vendor/bin/pest --init $ ./vendor/bin/pest folders: ├── 📂 tests │ ├── 📂 Unit │ │ └── ExampleTest.php │ └── 📂 Feature │ │ └── ExampleTest.php │ └── TestCase.php │ └── Pest.php ├── phpunit.xml 簡單示例 這邊可以自己添加 phpunit.xml 對應路徑,可以看到 Pest.php 實現細節: 這邊表示注入 TestCase 到 Feature 底下,可以使用 TestCase 裡面所提供的方法,當然也可以注入對應的方法到指定的 folder 底下: uses( Tests\TestCase::class, // Illuminate\Foundation\Testing\RefreshDatabase::class, )->in('Feature'); SumTest...

March 21, 2023 · Yish