2018年3月4日 星期日

Ether(乙太幣)及智能合約(Smart contract)

第一代使用區塊鍊技術的數位貨幣網路是 Bitcoin network, 新一代則是 Ethereum network 以太紡,它使用Ether(以太幣)作為它的貨幣, 安裝 ethereum network 的客戶端程式 geth,可以加入網路來挖礦(mining),但需先下載完所有的區塊鍊(blockchains)

一些單位換算與術語:
   1 Ether = 1e9 Gwei = 1e18 wei

   Gas cost 使用 Gwei 為單位, 是驅動智能合約的燃料,一般預定是 20 Gwei,可以自由修改.
   Gas limit 用來設定 Gas 最大用量(或稱為預估用量),如果設定不足, 當合約送入網路,一旦 Gas 消耗完,此合約作廢,簡直是勞民傷財,一個 transaction (傳送想要加進區塊鍊合約:)需要21000個 Gas 才能驅動,盡可能將 Gas Limit 設大一點,當合約驗證完成,只會消耗所需的用量,消耗不完的會被退還,因此執行合約,預估需消耗
    (Gas Limit * Gas Cost)/1e9 個 Ether

當設定 Gas cost 為 20Gwei  時, 傳送此合約預估要花費
    21000 * 20 /1e9  = 42e-5 = 0.00042 Ether

這還不包含合約的內容,內容(Tokens)需另外計費,合約內容是以 Solidity 語法(script)來實現,須先將它編譯(Compile)成代碼(tokens),才能用演算機(Virtual Machine)去執行,而每個 ethereum client (例如 geth)其實就是一部演算機,都可以來執行代碼,而這合約內容存在於區塊鍊上,無法被任何人更動但可以被執行,因此稱之為智能合約(Smart contract)

目前乙太幣價格也快來到 1000 USD, 這代表要驅動智能合約須付出昂貴代價,也許會對想要簽署智能合約的消費者怯步,但同時也造成大家一窩蜂去挖乙太幣,這個生態系統需要進一步作觀察

2018年3月2日 星期五

比特幣(Bitcoin)總數量

最近比特幣吵到天價(今天 2018/3/3 大約等於是 11000 USD), 到底他是什東西,比黃金還值錢.新的比特幣發行來自於解決了一個電腦運算的問題,而獲得一定數量的獎勵,一旦累積到210000個區塊時,獎勵數量就會少一半,之後再累積區塊數量計算新一輪的累積量,如果再次達到210000個時,獎勵數量又再少一半.由此以每 210000 個區塊的累記數量為一輪來分析(代數用 p 當變數), 獎勵從最初第一輪(p=0)的 50 個比特幣, 目前累積到區塊數量共約 511717(第3輪獎勵的階段, p=2),試著用數學式來演繹:

      ( 511717 / 210000 )  <  3

      p = int( totalbolcks/210000 )  = 2       取整數, 相當於第 p+1 輪

 

因此目前新生成新的區塊獎勵是:

      50 *   (1/2)  * (1/2)  = 50 *[ (1/2)^2 ]= 12.5 個比特幣

      目前 p = 2



用通則來表示獎勵數量, 將(1/2) 的 p 次方改用 2^-p 來表示:

       50 * ( 2^-p )

       p =int( total bloclchains/210000 )



由此來計算第 p+1  輪累計的比特幣總量是:

      210000 * 50 * ( 1 + 2^-1 + ... + 2^-p)



如果使用 32 位元的長整數來儲存數值,當 p=32  時 2 ^ -32 將會變成 0, 也就是第 33 輪後獎勵將變為 0 個比特幣, 之後的報酬將只會來自於交易費用(transaction fee),上述最後一項其實就是一個等比級數運算式,因此可以算得比特幣總發行量等於:

      210000 * 50 * 1/(1-2^-1) = 21000000



它的帳務資料(blockchain as a ledger)由每個參與(pee-to-peer)的礦工(miner)下載一份作為稽核他人的付款(transaction)之用,相當於點對點的帳務網路系統.



     第一輪的礦工共挖出 50% 的比特幣

     第二輪的礦工又再挖出  25% 的比特幣

     目前第三輪之後的礦工就只剩不到  25% 的比特幣可以再挖出來





推導總共 n 項(輪)等比級數的總和, 用變數代換將上述 p 換成 n-1:

         s = a^0 + a^1 + a^2 + ... + a^(n-1)             --- (1)

   a * s =           a^1 + a^2 + ... + a^(n-1) + a^n   --- (2)

(2) - (1)

   (a-1) * s =  a^n - 1                                            --- (3)

               s = (a^n-1)/(a-1)                                   --- (4)

 如果 a  < 0, a^n 會逼近於 0, 因此等比級數總和

               s = 1/(1-a)                                             --- (5)