點擊藍字關注比原鏈公眾號
2018年11月17日,“2018比原鏈全球開發者大會”正式在杭州國際博覽中心開幕,這是杭州第一次由開源組織舉辦的技術型峰會,也是杭州被譽為區塊鏈之城以來規模最大的一場區塊鏈開發者大賽,100+開發團隊歷經4個月激烈廝殺,16支團隊將在本次大會上展開最終角逐。
11月18日上午,比原鏈首席架構師James帶來了題為“比原鏈的虛擬機、合約及開發”的演講。
以下為現場速記,巴比特整理發布:
大家好,我今天在這里分享的話題是“PO智能合約”。什么是PO?PO其實就是面向過程式的編程。
首先我來介紹一下過程式編程。在現在的編程語言中,大多數是結構式編程,比如說C++、GO語言。你想做什么事情的時候,其實你是要對對象創建一個抽象的結構體,任何的func其實都是結構體上可調用的函數,以多結構體交互的模式完成復雜的功能。
過程式編程不一樣,中間沒有結構體的概念,過程式編程只有無數的func,func可以在任何時間被調用,func可以被自身調用,也可以被別的func調用,以一個流程圖的形式完成整套過程。過程式編程有經典的作品,比如說Liunx內核、git以及ApacheHTTP服務器,其實都是基于過程式編程來完成的。
動態 | 比原鏈發布MOV穩定金融體系白皮書:1月15日,比原鏈正式發布《MOV 穩定金融體系白皮書1.0》。白皮書提出了一種創新穩定金融方案,與當下的穩定幣項目相比,有3點優勢:
一是真正意義上的多資產抵押穩定金融體系,抵押資產包括BTC、ETH、USDT和BTM;
二是當下的穩定幣項目大多是從穩定幣本身出發和立項,沒有站在構建完整生態的高度和立意上思考;
三是激勵循環機制,不同的角色擔負不同的責任并從系統獲利,極大的維護了系統的穩定性。[2020/1/15]
Equity是全新的智能合約。之前和很多開發者交流的時候,他們會問我很多問題,比如可不可以直接把以太坊的智能合約放到比原鏈上跑,或者我想把EOS某個功能在比原鏈上實現,怎么做?其實Equity有自己的獨特特性,所以我今天通過表格的方式來闡述它的特性。
先說最底層的虛擬機。從最底層來說,大多的公鏈虛擬機都是基于堆棧的形式構成的。雖然不同虛擬機的OP不同,但是架構是相同的。所以回到之前的一個問題,如果你愿意創建一個編譯器把以太坊的智能合約編輯成比原鏈虛擬機的OPCODE,你可以把以太坊合約在比原鏈上跑,包括EOS合約的原理也是一樣的。
第二個重點是合約語言。比原鏈是面向過程的合約語言,它的特點形成也跟BUTXO相關。我們知道面向過程沒有一個結構體、沒有一個對象,其實這是天然契合UTXO的模型,我們知道UTXO的特性是我不可能花一半,我只能銷毀一個UTXO并且創建一或多個新的UTXO,其實這是一個過程流的模式。這跟以太坊完全不同,以太坊是賬戶模型,甚至你可以把以太坊賬戶理解成一個結構體,因為你的賬單其實是結構體里的balance。
現場 | 比原鏈CEO朗豫:區塊鏈是能改變生產關系的一種模式:金色財經現場報道,在“2019 CAN 萬物互鏈·區塊鏈與全球經濟新格局”大會上,比原鏈CEO朗豫表示:比原鏈是2018年4月份進行了主網上線,比原鏈是PoW共識的網絡。主網上線后,比原鏈的規則便由算力來決定,因為我們提出了算力即權利。上線后,我們會根據最初的白皮書規劃,最初對社區的承諾進行實現,保證發展路徑的明晰。我們最終的目標是實現資產上鏈,實現數字資產化和資產數字化。一個事物的誕生,當你認為它能做到什么的時候,它的天花板已經存在了。區塊鏈是能改變生產關系的一種模式。我們看到目前聯盟鏈更多的是生產力的提升,可能有一部分生產關系的改變。但我們真正要找到的更大的創新是在公鏈上,這并不是一蹴而就,需要沉淀和探索。[2019/12/3]
在上層來說,比原鏈想做的是資產上鏈,我們想把任何資產放到區塊鏈上,然后用智能合約進行可信任的交易。比如說你的房產或者公司的股權,以太坊和我們要做的不同,他們想做的其實更像一個虛擬機運行各種合約。所以不同的需求導致了很多事情有差異。
我們為什么設計Equity,為什么我們選用過程式編程?這里有兩點:一是安全;二是應用型。
從安全來說,去年Parity錢包被攻擊,導致51.37萬個ETH凍結。為什么被攻擊Parity錢包代碼安全,但問題在于它調用底層庫,底層庫被攻擊,導致錢包毀掉。
現場 | 比原鏈CEO朗豫:最終聯盟鏈和公有鏈可能會有一定的融合:金色財經現場報道,在“2019 CAN 萬物互鏈·區塊鏈與全球經濟新格局”大會上,比原鏈CEO朗豫表示:在我看來,聯盟鏈更追求效率,技術上聯盟鏈存在并行環境,參與聯盟鏈的各方存在一定的信用層。公有鏈是一個無門檻的基礎設施,相比聯盟鏈,無法確定節點是否有惡意,公有鏈可能遇到軟分叉、硬分叉的情況。我認為,最終聯盟鏈和公有鏈可能會有一定的融合,比如通過公鏈的狀態通道和閃電網絡的技術,將公鏈的技術與聯盟鏈進行結合。[2019/12/3]
在以太坊的世界中,其實每一個合約就像一個結構體,是一個指針,在別的合約調用它的時候,通過指針調用func。這里有兩個例子,左邊米色是比原鏈合約例子,右邊粉色是以太坊上的例子。
比如我們有兩個合約,第一個是金庫,我們提供的功能是存錢、取錢、貸款,第二個是公司股權,股權可以轉讓、抵押或者解鎖。因為這兩個合約涉及到資產轉移,所以對數學要求安全,做交易的時候要做易存易出的檢測,所以假設我們都有一個數據庫保證加減乘除是安全的。在以太坊的世界中,其實庫是一個子合約,在金庫合約和公司股權合約的時候,它其實是調用合約。如果合約被攻擊了,合約毀掉就導致金庫合約和公司股權合約崩掉也不能運行。這就是為什么Parity出問題的原因。
動態 | 比原鏈將在9月30日停止對第三方平臺比原鏈ERC20代幣兌換的技術支持:據比原鏈創始人段新星微博消息,截止2018年9月30日24:00,比原鏈團隊將停止對各第三方平臺的比原鏈ERC20代幣兌換的技術支持。[2018/8/23]
左邊是Equity基于面向過程形式的合約展示形式,我們也有公司股權和金庫兩個合約,但是數學檢查合約是作為這兩個合約的子func存在,這代表了什么?從攻擊角度來講你不可能攻擊func,原因是func相同的輸入永遠會產出相同的輸出。而結構體因為內部數據改變,相同的輸入會導致不同的輸出。
所以說func是定性的,所以在Equity寫合約的時候,如果你在合約寫成的時候,你確定合約是安全可用的,以后就不會有外部因素讓合約失效。
從應用來說。我們這么設計Equity,第一要天然契合UTXO模型特點。因為我們的賬戶模型很怪,賬戶要有balance,那在資產流入流出的時候我們要更新賬單。但是UTXO其實是沒有這個概念,UTXO的概念是什么?它的概念就是我花費了或者我沒花費。所以虛擬機只能有兩個狀態:一個是true和false,就代表這個UTXO是否可以被解鎖。也是通過這兩個狀態,可以保證多資產在原子級操作下可以進行交易。
比原鏈項目周報 開發和業務進展:開發進展:1. 調整reactor 結構,代碼結構功能分離, 增加可配置挖礦問題;2.為提升core性能而改造utxo成為遞增存儲的模式, 并測試;3.完成了包含program的ivy模板合約的鎖定解鎖交易,并進行了相關的單元測試;4.整合accountDB和assetDB到walletDB(代碼放在walletDB分支), 跟蹤部分github上bytom issue并解決;5. 設計錢包管理方案及wallet, account, asset代碼整理;6. [dev] PoW算法性能優化,理論證明的計算機驗證已經完成, 寫論文中;7.客戶端產品UI設計和交互研究,完成基礎交互原型圖;8. block_keeper 中有個for 協成沒有catch 住signal 信號 (issues#94);9. windows 平臺編譯不通過BUG (issues#153)。業務進展:1. 比原鏈CTO朗豫拜訪西南交通大學密碼學研究工作組,對關于AI PoW算法的證明和研發工作進行溝通和交流,預期將在月底前完成論文撰寫并發表;2. 比原鏈CTO朗豫周六參加“Chainge“ 技術沙龍第三期-揭秘區塊鏈發展, 演講主題《從0到1開發公有鏈》,分享比原鏈開發的經驗。[2017/12/12]
什么意思?如果我有一萬個BTM,我想換一個比特幣,雙方其實都想得到保障:我的確收到了我的錢,我才付出去。在面向對象的情況下,其實它是用func來保證的,但是Equity在虛擬機底層通過兩個合約,都返回特性,再加上交易是原子級,保證任何情況下交易都能得到真正的互換,還不會說錢已經打給了A,但是A的錢沒有過來的情況。
下面聊一下比原鏈上的進階合約的開發。其實這也是平時跟大家交流時候會碰到的問題。
首先是自身鎖。我看Equity上大多數應用只是涉及到一個合約,什么意思?比如說BB交易,我把一些資產鎖在合約上,如果誰愿意跟我交易那就交易,其實合約只存在一個UTXO中,UTXO過去就解鎖了。我怎么樣能夠做一些復雜的情況,比如我想眾籌一萬個BTM,這肯定不是通過一個人來做,可能是多方共同眾籌。
在結構式編程上,因為結構體上有一個賬單,我只要更新賬單,就能更新合約總額。但過程式編程并沒有賬單概念,所以我們可以想另外的方法,那就是我們的合約可以有多種解鎖方式,最普通的是兩種:
第一,成功提供所有解鎖條件,合約成功解鎖。
第二,我沒能解鎖合約,資產鎖在的原有UTXO不動;自身鎖是第三種概念,我有一個條件,你可以解鎖它,但是解鎖之后的資產鎖回相同的合約之中。
為了更好說明,我做了一個例子。這是公益眾籌,眾籌條件是我需要在指定條件內眾籌1萬個BTM,這樣的眾籌才是成功的。UTXO#1就是第一個眾籌的參與者,他自己把3千個BTM鎖到UTXO當中,以智能合約形式。
因為我們是流程圖形式,所以這兩個合約有兩個解鎖方面:
第一,我到3天了,并沒有募集足夠的資金,原路退款。
第二,我是第二個人,我認為這個公益很有意思,我想參與進去,所以我從自己的賬戶中付出4000BTM,4000BTM同時解鎖第一個UTXO#1,UTXO#1加上4千個BTM,同時鎖到了UTXO#2中,那就是7千BTM。在UTXO#1智能合約中其實有一個檢測制度,來保證UTXO#1解鎖前必須要到鎖到UTXO#2,不能鎖其他的UTXO,不然的話其他人就會來攻擊把錢拿走了。第三個人過來了,認為這件事情很有意義,他自己也出3000BTM成功創建UTXO#3,眾籌完成。
眾籌完成之后可以進行條件性解鎖,比如說發給需要的人。當然在流程圖中,其實UTXO#1、UTXO#2、UTXO#3都可以進行原路退款,如果達到時間、錢沒有到賬的情況下。
擴展性。如果在某種情況下,我的合約很復雜,怎么辦?可能我的合約有一百萬行代碼,我不可能放在一個UTXO中,這實在太大了,因為我們知道區塊體系有上限。代碼上限達到,怎么辦?這里可以利用pay-to-Script-hash的特性,其實就是比特幣兩種地址之一。比特幣一種地址是Pay-to-Script-hash,即付給你的公鑰的hash,第二是付給你一個智能合約的hash。如果你的合約特別大,你可以把它進行模塊拆分化。模塊拆分化,可能拆成一百個模塊,每一個模塊有hash。每一個模塊之間的調用就是用hash調用,有興趣可以會后交流。
第二個概念,平行互鎖。一個UTXO只能鎖定一種類型的資產,如果我想要做多種類型的資產,怎么辦?比如我有20種資產,我要做互相鎖定的交易,這時候就用平行互鎖。平行互鎖是什么意思?正常一個UTXO解鎖的時候,我管我自己就可以了,但是平行互鎖是說我知道有哪些智能合約跟我相關,如果我要解鎖我自己,我不僅要滿足自身解鎖條件,并且要認證所有跟我相關的合約全部得到解鎖并滿足指定條件。其實并行互鎖可能會涉及到很多的資產,我在這里做兩個資產,讓大家簡單了解一下。
比如說借貸,我可能拿了公司10萬股權去進行抵押貸款,有50萬個BTM。規則是什么?我可以在任意時間償還借貸。如果到時間我不償還,公司當然有權利把我的股權拿走。這里面涉及到兩個合約:
第一個UTXO,它其實是鎖定你的股權,就是借貸方的抵押股權全部鎖定在這里。
第二個UTXO,更多是還款合約,代表你還了多少錢。
這是怎么工作的?比如說我有一天說我手頭比較寬裕,我愿意還30%3萬股權的貸款,那么我自己就同時解鎖兩個UTXO。
UTXO#1就是要把15萬BTM打到UTXO#4的賬戶里面,另外我自己要建立UTXO#3,就是把我的一部分股權解鎖出來。互鎖怎么鎖?就是在UTXO#1和UTXO#2兩個智能合約中,它們其實都會做一些檢測,檢測UTXO#1保證UTXO#4存在,UTXO#2要保證UTXO#3是存在的。通過這種互鎖的方式,保證沒有任何一方可以作弊,以這種形式存在。
由于今天時間比較緊,我把一些信息濃縮了。我們在明天會上線1.0.7的版本,解鎖了更多Equity合約更強大的功能,歡迎大家使用開發,同時希望大家給我們提更多更好的意見,讓我們做出更好的合約編譯器服務你們,讓你們通過更好的合約,讓資產更好在比原鏈上流通。謝謝大家,這是我今天的演講。
尊敬的幣易用戶: BitcionCash(BCH)已于2018年11月16日0:40:00,以及在新加坡時間2018年11月20日1:00上線BCHABC開放BCHABC/CNY.
1900/1/1 0:00:00尊敬的用戶: 根據Bytom官方消息,BTM于新加坡時間2018年12月10日?16:00進行升級,K網國際站將在保證用戶資金安全的同時配合BTM官方升級.
1900/1/1 0:00:00更新通知:?BCH、BSV充值及提現將于新加坡時間2018年11月29日19:00開放,請大家合理安排自己的數字資產.
1900/1/1 0:00:00當前瀏覽器不支持播放音樂或語音,請在微信或其他瀏覽器中播放寓言張韶涵-OverTheRainbow各位IPC知產鏈的伙伴兒:大家好!IPC訂閱號發布文章詳細介紹IPC公鏈生態全面戰略合作伙伴--.
1900/1/1 0:00:00親愛的用戶:<\/p>????<\/span>您好!為了給您提供更優質的服務,KKcoin計劃于新加坡時間2018年12月1日20:00進行升級優化.
1900/1/1 0:00:00EOS看漲期權 代碼周EOS看漲1210期權標的EOS合約類型歐式看漲期權計價單位USDT最小價格單位0.0001USDT合約比例1:2.
1900/1/1 0:00:00