一個最簡單的cryptocurrency
- 至少要有製作coin的能力,此coin跟真實鈔票一樣要有編號
- 要能驗證真的是某人製作出來的coin,透過digital signature scheme
- 要能交易,每個交易statement都要使用digital signature scheme
- 所有錢幣都是immutable! 一但被創造就不能更動任何資訊,只能被消耗毀滅
以下圖來說,首先Goofy(其identity為其某一組public key) 製作了一個coin,且有唯一獨特的編號,旁人可以透過Goofy的identity來驗證此錢幣的數位簽章的真偽。
Goofy可以把coin送給Alice,這個交易也需要Goofy的數位簽章,並且使用hash pointer指向前一個交易block(亦即Goofy創造錢幣這件事),需要hash pointer的原因在於證明此coin在交易鍊中最後的擁有者是誰,可以想做是真實世界中所有的產權交易紀錄。
此時Alice變成是這個錢幣的擁有者(藉由觀察之前的交易紀錄),當然她也可以交易賣給Bob。Alice簽署了交易的文件,並且也新增一個交易block,利用hash pointer指向前一個交易。
設計難題1: Double-spending attack
如果alice一幣兩賣呢? 以上面這種簡單的規範,是可以發生的,會變成下面的交易紀錄chain:這是一個cryptocurrency要解決的難題!
一個解決辦法就是對整個交易紀錄的block chain做簽名,並且公佈出來,有了交易歷史資料,Alice就不可能一幣兩賣。
交易種類
1. 製作新錢幣每個public id都可以製作自己的錢幣,在同一個製作錢幣的交易紀錄中,可以一次製作多個錢幣,每個錢幣有(編號, 面值, 擁有者)三個屬性,例如下面這個73號交易製作了三個錢幣,編號分別是73(0) 73(1) 73(2):
2. 給付
一個給付交易中,由於錢幣是immutable的,所以可能會消耗掉幾個創造出來的錢幣,然後同時又創造出幾個新的錢幣。例如以下#73交易:有三個尚未被消耗掉的有效錢幣68(1), 42(0), 72(3),在本次交易中將被消耗掉,而這三個錢幣的擁有者必須都簽署(每一個錢幣都要簽署一次,即便擁有者是同一人)此交易記錄,證明他們的確授權錢幣被消耗。這三枚錢幣的幣值總和假設是n,則本次#73交易必須創造出總和等值n的錢幣給予新的擁有者,才算是合法的交易。
沒有留言:
張貼留言