2014年1月15日 星期三

比特幣與OLIN Technology〈單語言智慧網路科技〉

OLIN,這是十幾年前的科幻預言,其中提到的2008年,就在那年中本聰(Satoshi Nakamoto)發表他的曠世論文--《Bitcoin:一種點對點電子現金系統(Bitcoin: A Peer-to-Peer Electronic Cash System)》

智能網路(Intelligent networks)可以以一種,帶有能使全球交流成為可能的翻譯介面之,單一語言來操作。這表示語言不再會是溝通的障礙。智能網路將會引介出一種能夠同步翻譯書寫和口語的“超語言”〈meta-language〉。它將會徹底改革〝遺傳心智〞的(the genetic mind’s)全球性結構,並且促進你們全球經濟的數位化。

有許多在〝階級制度〞〈the Hierarchy〉裡的人將會非常激烈地反對全球數位經濟的概念,但我們要告訴你,不管有多少抱怨和擔心,它還是會發生。你們最有影響力的銀行、電腦製造商和軟體公司將會合起來創造出這個重要的科技,而單語言智慧網路〈One Language Intelligent Network, OLIN〉將會成為全世界的電腦-基礎(computer-based)系統的標準操作系統。

在2008年之前這都還不會出現,所以在你們能接觸到這種你們的經濟的全球化之前還有一段時間,但整個系統和結構,在一些你們最聰穎的工程師和科學家的內心裡已經在被概念化和設計著。我們向你保證,這不是什麼該被懼怕的東西,而是該被欣然接受的,並不是為了經濟上的價值,而是為了OLIN科技將會促進全球文明發展的方式。

當OLIN科技逐漸形成,它將會變得愈來愈為個人〈individual〉所支配。換句話說,個人將無可避免地被連結到網路的娛樂與教育應用上,而這些應用將會是全球化的。跨國媒體公司〈global media companies〉將不會再有地理性的出版市場。它們將會為全球觀眾製作內容,而每一個個人將會界定什麼是他要的娛樂和教育以及他要如何地被娛樂和教育。

OLIN科技將會“知道”連結到它的網路上的每一個個人的偏好和興趣,而在2016年之前,它將會比20世紀後期的電話更為普及。因此,這網路將會被所有的個人所制控,而內容或服務的製造者將成為個人的“奴隸”或“反動勢力”(reactionary force)。因此,個人有必要小心地界定他們的娛樂和教育需求,否則OLIN科技將會傳送不受歡迎的內容。

2014年1月13日 星期一

[比特幣合約]押金換取信任

原始資料請參考Contracts#Example_1:_Providing_a_deposit
使用者參加投票網站或論壇,網站為了防止機器人程式(spambot)攻擊,要求使用者提供一筆押金,以換取信任

雙方的協定流程如下
ps.注意2013年對於nLockTime的實作,時間未到時交易是不能廣播的,還不適用於本協定
  1. 使用者與網站互傳新公鑰
  2. 使用者建立交易Tx1支付10BTC押金到需雙方共同簽名的輸出,但不廣播
  3. 使用者傳Tx1哈希值給網站
  4. 網站建立交易Tx2,Tx2將Tx1的押金退回使用者,nLockTime設為未來某天,sequence number設為零
  5. 半簽的交易Tx2送回使用者,使用者檢查驗證內容,並簽名
  6. 使用者廣播Tx1接著廣播Tx2
此時錢被鎖在需兩方簽名才能動用的交易單裡,直到nLockTime所設定的時間點才會退錢,如果期滿使用者想要續約,網站可調降押金金額

2014年1月7日 星期二

[比特幣合約]對特定方迅速微调的支付(micropayments)

原始資料請參考 Rapidly-adjusted (micro)payments to a pre-determined party

無信任基礎的雙方,如網咖,可多次小額交易為保障彼此的手段,但缺點是交易成本高,若建立雙方有期限的支付通道(payment channel),可有效降低雙方交易成本,方法為,先產生一筆需雙方簽名的押金交易,接著產生一筆到期全額退款交易,期間進行多次微調交易(不超過押金額度),直到到期前將最後一次微調交易廣播,便可省下多次交易的手續費

雙方的協定流程如下

  1. 客戶端產生一新公鑰K1.向伺服器要一公鑰K2
  2. 客戶端產生並簽署尚不需廣播的交易T1,支付10BTC到一個同時需要K2及K1的輸出,輸出腳本為 "2 K1 K2 2 CHECKMULTISIG"
  3. 客戶端產生退款交易T2,輸入連結到T1,將所有錢送回自己,設定時間鎖,例如三小時,T2不要簽署並傳送給伺服器
  4. 伺服器用K2簽署T2並傳簽名給客戶端,注意此刻伺服器還沒收到T1
  5. 客戶端驗證T2的伺服器簽名
  6. 客戶端簽署T1並傳簽名給伺服器,(伺服器?)廣播交易T1,錢被鎖住
  7. 客戶端產生交易T3,輸入為T1,有兩個輸出,一個到K1另一到K2,一開始配所有值給K1(如同沒上時間鎖的退款交易),客戶端簽署T3並提供交易及簽名給伺服器
  8. 伺服器驗證T3輸出到K2(屬於伺服器的部份)的款項及客戶端的簽名
  9. 當客戶端希望付給伺服器,就調整T3的副本,將自己的K1輸出額度挪一些給伺服器K2,然後重新簽署並送簽名給伺服器,客戶端可只傳必要的資料,由伺服器調整自己的T3副本

ps.目前(2013)時間鎖交易的實作,時間未到時是不會廣播的