作者kugwa (闇黑圣饥魔)
看板DigiCurrency
标题[闲聊] 这东西有人做过了吗?
时间Wed Jun 6 08:33:44 2018
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://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1528245227.A.095.html
1F:推 Sarnux: 量子链 06/06 08:47
太感谢了
related work + 1
2F:推 tcn1john: bch的op code? 06/06 08:59
这是不是还没出来呀
但可能也会实现差不多的功能
3F:推 DarkerDuck: 有蛮多计画是要在bitcoin上面加上smart contract 06/06 12:30
4F:→ DarkerDuck: 不过因为bitcoin手续费太高,几乎没有任何意义了 06/06 12:31
所以题目是扩大范围到UTXO架构的区块链
比特币只是拿来举例而已
6F:→ DarkerDuck: 不过它并非转移原生币,而是counterparty自己的token 06/06 12:42
对 我看到FAQ说没办法转移比特币了
Can smart contracts work with Bitcoin 那段
https://goo.gl/pukcmw
我认为token在实作上只是合约程式码里面自订的变数而已
token的转移说穿了只是合约内部把某人扣掉多少 再把另一个人加上多少而已
所以应该是相对容易实现
但原生币就比较麻烦
举例来说
在比特币上做的智能合约架构 如果要让合约能够持有比特币的话
合约必须要有自己的UTXO集合 且不能让别人花到
(这应该不trivial 因为合约不可能透过保管私钥来持有UTXO)
一楼提到的Qtum好像能做到这件事
稍微看了一下它的解法 可能跟我想的自以为还算漂亮的解法 有87%相似
(虽然我是没有要用Solidity和EVM 但总之最底层的概念应该一样)
觉得有点难办 当然我还是得再深入Qtum来确认
7F:推 Q8i: IOTA Qubic的智能合约? 06/06 12:45
8F:→ Q8i: 不好意思文组没能力分别,只能给你连结= = 06/06 12:45
他好像没有教怎麽写合约耶
应该是还没做出来?
11F:→ timwu: Qubic尽是宣传资料,合约语言,VM,如何共识,如何存放,细节通 06/06 13:35
12F:→ timwu: 通不打算交待 06/06 13:35
稍微看了一下RSK
他应该是用侧链做到转移比特币的
跟我说的直接在比特币链实作一个智能合约架构来转移比特币不太一样
不过我现在才知道原来侧链就是用来做这件事 学习了
另外总觉得Qubic很难达成共识
毕竟每个full node处理tangle的交易的顺序是不一样的
很难让每个full node的合约状态一致
13F:推 a8311882003: 推 有意思 06/07 01:09
※ 编辑: kugwa (140.112.232.231), 06/08/2018 06:16:21
14F:推 DarkerDuck: 926字 * 8星 = 7408 PCH 07/12 21:15