[閒聊] 這東西有人做過了嗎?
UTXO架構的區塊鏈的智能合約 且能夠進行區塊鏈原生幣的轉移
請問這個東西有什麼團隊做過嗎?
講具體一點可能就是 一個比特幣上的智能合約架構
合約可以持有比特幣
可以轉錢到其他合約 或某人的收錢地址
也能接受其他合約或某人 轉來的比特幣
其實就是很像以太坊那樣
差別在於以太坊是account架構 不是比特幣的UTXO架構
(我知道以太坊的Design Rationale 有說明為何採用account架構啦
但我覺得privacy的重要性還是有討論空間)
是這樣的啦
小弟我現在碩二想寫論文混畢業
左思右想
所有我做過的東西裡
可能這東西勉強可以拿來說嘴
但不敢確定是不是沒人做過
我有稍微查一下現有的智能合約
Hyperledger是私有鏈 好像沒有幣
各種Altcoin大都是改進比特幣script 然後就說他是智能合約 但其實script無法實現上面說的
(最根本的問題應該是一個script只能控制一個output 所以無法控制要轉多少錢出去)
可能有某些冷門的幣或是論文是我漏掉的
因此還請各位板友開示 感激不盡
===============================================================================
更新:
深入研究了一樓提到的Qtum
它的確實現了我要做的事情
但在細節上它採用的解法還是跟我有點差異
Qtum的合約 在VM裡執行到轉錢的指令時
會構造一個額外的交易 專門轉移合約的錢
這個轉移合約錢的交易
inputs就是從合約所擁有的outputs挑選
(與錢包構造交易時進行的coin selection是一樣的意思)
outputs就是別的合約或是收款人地址 以及找錢給原來的合約
他這種解法的缺點
自然就是多了轉移合約錢的交易 佔用區塊空間
合約轉錢越多次 佔用區塊的空間也越多
而且他要在挖礦流程動點手腳
使得觸發合約執行的交易和轉移合約錢的交易被包在同一個區塊
而優點大概就是reorg比較容易復原UTXO吧
因為UTXO的改變都明確記錄在交易的input/output裡
所以不用多寫程式碼去復原UTXO
比特幣原本的程式碼會統一解決
而我的解法
基本上就是VM執行到轉錢指令時
直接讓VM去改變UTXO
(首先做coin selection把屬於此合約的UTXO花掉 接著添加新的UTXO)
而不是另外構造專門轉錢的交易來改變UTXO
優缺點剛好跟上述Qtum的解法相反
簡潔不繞圈子 但要加點程式碼讓reorg時能復原UTXO
不過我覺得我的解法還是略勝一籌
只要加程式碼讓VM轉錢時留下UTXO變化的記錄
很容易就能接上比特幣原本的程式碼來復原UTXO
關鍵就是「讓VM可以改變UTXO 而不是只讓交易改變UTXO」這件事
這是我思考以太坊的運作 而領悟到的究極奧義
(比特幣的UTXO相當於以太坊的world state)
不知是否有團隊已經先行參透 並運用到UTXO架構的區塊鏈上了
參考:
Qtum Team裡的人解釋如何讓UTXO model裡的合約轉錢
(https://forum.qtum.org/topic/48/how-qtum-makes-ethereum-contracts-run-on-the-utxo-model)
Qtum白皮書
(https://qtum.org/user/pages/03.tech/01.white-papers/Qtum%20Whitepaper.pdf)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.232.231
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1528245227.A.095.html
推
06/06 08:47,
6年前
, 1F
06/06 08:47, 1F
太感謝了
related work + 1
推
06/06 08:59,
6年前
, 2F
06/06 08:59, 2F
這是不是還沒出來呀
但可能也會實現差不多的功能
推
06/06 12:30,
6年前
, 3F
06/06 12:30, 3F
→
06/06 12:31,
6年前
, 4F
06/06 12:31, 4F
所以題目是擴大範圍到UTXO架構的區塊鏈
比特幣只是拿來舉例而已
→
06/06 12:31,
6年前
, 5F
06/06 12:31, 5F
→
06/06 12:42,
6年前
, 6F
06/06 12:42, 6F
對 我看到FAQ說沒辦法轉移比特幣了
Can smart contracts work with Bitcoin 那段
https://goo.gl/pukcmw
我認為token在實作上只是合約程式碼裡面自訂的變數而已
token的轉移說穿了只是合約內部把某人扣掉多少 再把另一個人加上多少而已
所以應該是相對容易實現
但原生幣就比較麻煩
舉例來說
在比特幣上做的智能合約架構 如果要讓合約能夠持有比特幣的話
合約必須要有自己的UTXO集合 且不能讓別人花到
(這應該不trivial 因為合約不可能透過保管私鑰來持有UTXO)
一樓提到的Qtum好像能做到這件事
稍微看了一下它的解法 可能跟我想的自以為還算漂亮的解法 有87%相似
(雖然我是沒有要用Solidity和EVM 但總之最底層的概念應該一樣)
覺得有點難辦 當然我還是得再深入Qtum來確認
推
06/06 12:45,
6年前
, 7F
06/06 12:45, 7F
→
06/06 12:45,
6年前
, 8F
06/06 12:45, 8F
→
06/06 12:45,
6年前
, 9F
06/06 12:45, 9F
他好像沒有教怎麼寫合約耶
應該是還沒做出來?
推
06/06 13:32,
6年前
, 10F
06/06 13:32, 10F
→
06/06 13:35,
6年前
, 11F
06/06 13:35, 11F
→
06/06 13:35,
6年前
, 12F
06/06 13:35, 12F
稍微看了一下RSK
他應該是用側鏈做到轉移比特幣的
跟我說的直接在比特幣鏈實作一個智能合約架構來轉移比特幣不太一樣
不過我現在才知道原來側鏈就是用來做這件事 學習了
另外總覺得Qubic很難達成共識
畢竟每個full node處理tangle的交易的順序是不一樣的
很難讓每個full node的合約狀態一致
推
06/07 01:09,
6年前
, 13F
06/07 01:09, 13F
※ 編輯: kugwa (140.112.232.231), 06/08/2018 06:16:21
推
07/12 21:15,
5年前
, 14F
07/12 21:15, 14F
→
07/12 21:26,
5年前
, 15F
07/12 21:26, 15F
DigiCurrency 近期熱門文章
PTT數位生活區 即時熱門文章