<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Edward_sv的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Edward_sv</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Edward_sv]]></copyright><item><title><![CDATA[一种Oracle token方案的概述]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/110977950</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/110977950</guid><author>Edward_sv</author><pubDate>Thu, 10 Dec 2020 20:13:16 +0800</pubDate><description><![CDATA[一种Oracle token方案的概述
现有token方案的局限
现在已经可以&nbsp;在BSV链上建立带有互换(swap)功能的token合约&nbsp;，这个方案设计得很漂亮，运用的一系列技术点都值得其他开发者参考。同时这是一个纯粹的层一方案，安全性由矿工进行保证。
但是该方案也有个限制：token与swap合约无法分离。也就是说token和swap合约要部署在一个UTXO中，因为swap要依赖token数据的真实性。而在采用纯粹层一方案的前提下，只有token合约中的token数据才保证真实性。
这]]></description><category></category></item><item><title><![CDATA[BSV上的一种可替换token的新方案：Oracle方案]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/109751531</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/109751531</guid><author>Edward_sv</author><pubDate>Tue, 17 Nov 2020 20:01:00 +0800</pubDate><description><![CDATA[问题
BSV有一个基于UTXO的层一token方案，但该方案无法完全在层一辨别token的真伪。有两种思路来解决这个问题：

在tx中携带历史tx链，但该方案引入了tx大小膨胀的问题。
在二层识别正确的UTXO集合，相当于把一大部分防伪工作放到了二层。

新方案的原理
这里要介绍的Oracle方案就是采取的第二种思路。该方案原理如下：

Oracle维护合法的token UTXO集合。
当钱包收到一笔token UTXO时，向Oracle申请该UTXO的合法性签名。
当Oracle收到一个token UTX]]></description><category></category></item><item><title><![CDATA[水龙头合约]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/109119838</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/109119838</guid><author>Edward_sv</author><pubDate>Fri, 16 Oct 2020 16:56:30 +0800</pubDate><description><![CDATA[前言
水龙头是什么
水龙头这个名字总会让我想起生活中把水龙头开关拧到无限接近但又不达到关闭状态的大妈们，这样可以让水一滴一滴缓慢滴出，但又不会触发水表计费，彰显出她们丰富的生活经验和生存智慧。

水龙头是赠送小额比特币的服务。
为了让用户可以快速尝试Bitcoin SV网络，会有人搭建水龙头服务，给用户赠送给小额比特币，这样用户就可以用这些币尝试使用Bitcoin SV网络，如：转账、测试、写入数据等。
 ——wiki.bsv.info 

合约需求
本文介绍如何通过智能合约直接在链上提供水笼头服务。该服务]]></description><category></category></item><item><title><![CDATA[支付通道基本原理]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/107523513</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/107523513</guid><author>Edward_sv</author><pubDate>Wed, 22 Jul 2020 21:21:42 +0800</pubDate><description><![CDATA[支付通道是指双方或多方无需信任地交换和更新tx的机制。在支付通道技术里，tx会在多方之间多次更新，除了最后一次更新需要上链，其他的更新都可以链下进行。这个特点特别适合需要快速更新tx的场景，比如频繁快速的支付等。相比每次支付都上链，支付通道的优势之一是可以节省手续费。
必备知识：nSequence和nLockTime
在了解支付通道之前，需要先了解比特币的两个技术点：nSequence和nLockTime。
nSequence约束tx更新
每个tx的每个input都有一个nSequence字段，可以把该字段]]></description><category></category></item><item><title><![CDATA[基于BSV智能合约的棋牌类游戏设想]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/107492135</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/107492135</guid><author>Edward_sv</author><pubDate>Tue, 21 Jul 2020 16:36:15 +0800</pubDate><description><![CDATA[有了BSV的智能合约相关技术，实现棋牌类的智能合约应该是可行的。我们以中国象棋为例，设想是否可以实现这样的一个合约：


合约初始化时确定对弈双方和行走顺序


只有对弈双方才可以走棋
只有通过对弈双方的才有权限花费合约UTXO，触发合约迁移到下一个状态。其他人无法花费合约UTXO。


合约约束回合制规则
每人每回合只走一步，交替走棋。不能多走，也不能破坏顺序。


合约约束行走规则
“马走日，象走田”等规则均由合约来约束，不符合象棋规则的走棋无法触发合约状态变迁。


合约可以判断胜负
一方的“将”被杀]]></description><category></category></item><item><title><![CDATA[R-Puzzle基本原理]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/107443689</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/107443689</guid><author>Edward_sv</author><pubDate>Sun, 19 Jul 2020 12:48:50 +0800</pubDate><description><![CDATA[长话短说
普通的ECDSA签名校验是校验整个签名与预期是否一致，而R-Puzzle仅校验ECDSA签名中的r是否与预期的一样。
ECDSA签名
ECDSA签名需要用到的信息：


基点：G


G的阶：n


签名者的私钥：s，从私钥可计算出公钥P = s * G


待签名的信息：m


签名过程：

生成一个新的随机私钥k，从私钥可计算出其公钥R = k * G。R的横坐标标记为xR，纵坐标标记为yR。
令 r = xR mod n
计算 H = Hash(m)
按照数据类型转换规则，将H转化为一个大端]]></description><category></category></item><item><title><![CDATA[基于BSV的存储证明]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/107039755</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/107039755</guid><author>Edward_sv</author><pubDate>Tue, 30 Jun 2020 12:07:33 +0800</pubDate><description><![CDATA[场景假设
Alice希望把自己的一个文件存储起来，Bob可以提供存储服务。所以Alice把文件给了Bob，但Alice并不信任Bob真的在帮她存储文件，所以Alice需要让Bob定期证明他正在保存完整的文件。只要Bob证明了他正在存储完整文件，那么Alice就会给Bob一些存储奖励。为了降低成本，Alice和Bob都不希望这个证明过程传输完整的文件。
解决方案
核心方案
Alice为了让Bob证明他存储了完整的文件，她需要给Bob提出一个问题，这个问题只有拥有完整文件才可以解答出来。所以上述场景的核心方案就]]></description><category></category></item><item><title><![CDATA[BSV智能合约（四）：OP_PUSH_TX背后的故事]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/106688887</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/106688887</guid><author>Edward_sv</author><pubDate>Thu, 11 Jun 2020 14:51:15 +0800</pubDate><description><![CDATA[该技术由nChain的前研究员Ying Chan在2016/2017年提出。
nChain有大约至少9项专利与该技术有关。
2018年BCH与BSV分叉前，nChain曾提出过该技术，但遭到质疑，方案被认为可能行不通，并且会导致脚本体积过大。2020年初sCrypt团队实现了该方案，证明这个方案是可行的，并且在BSV上TX体积（约2K字节）并不是问题。
BCH也有类似的技术方案，不过并不是通过原有操作码OP_CHECKSIG来实现的，而是通过引入新操作码OP_CHECKDATASIG来实现。是否引入新操作.]]></description><category></category></item><item><title><![CDATA[BSV智能合约（三）：神奇的OP_CHECKSIG]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/106688843</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/106688843</guid><author>Edward_sv</author><pubDate>Thu, 11 Jun 2020 14:49:35 +0800</pubDate><description><![CDATA[上一篇我们分析了计数器合约的代码，其中最关键的问题是：如何保证sighashPreimage参数的真实性。要弄清楚这个问题，先要从比特币脚本的操作码OP_CHECKSIG说起。
OP_CHECKSIG用于验证ECDSA签名。ECDSA签名的验证需要如下三个参数：

公钥：签名私钥对应的公钥。
被签名数据：被签名的数据的Hash值。
签名。

如果签名是由公钥对应的私钥针对数据进行签署的，那么签名验证成功，否则失败。而OP_CHECKSIG验证的ECDSA签名，只需要公钥和签名两个参数。为什么没有“被签名数据]]></description><category></category></item><item><title><![CDATA[BSV智能合约（二）：计数器合约代码分析]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/106688661</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/106688661</guid><author>Edward_sv</author><pubDate>Thu, 11 Jun 2020 14:47:41 +0800</pubDate><description><![CDATA[为了实现上一篇文章中说的“计数器合约”，需要介绍BSV上的高级语言sCrypt，并解释如何用sCrypt实现这个合约。
sCrypt和BSV脚本的关系就像C语言和汇编语言的关系。通过sCrypt VS Code插件，可以把sCrypt编译成BSV脚本语言，还可以在VSCode中进行调试。
sCrypt语言实现的“计数器合约”代码如下。一会我们会详细分析。
contract Counter {
    public function increment(bytes sighashPreimage, int a]]></description><category></category></item><item><title><![CDATA[BSV智能合约（一）：看似不可能完成的任务]]></title><link>https://blog.youkuaiyun.com/Edward_sv/article/details/106688515</link><guid>https://blog.youkuaiyun.com/Edward_sv/article/details/106688515</guid><author>Edward_sv</author><pubDate>Thu, 11 Jun 2020 14:40:38 +0800</pubDate><description><![CDATA[BSV智能合约（一）：看似不可能完成的任务
如果你转出了一笔BSV，你还能控制这些BSV如何被使用吗？
可能很多人的答案是：不能。一旦币被转出，就意味着失去了控制，收到币的人，想怎么用就怎么用。而实际上，跟很多人的想法相反，BSV是可以通过脚本来控制转出去的币的，这些币只能按照脚本已经规定好的方式使用，而不能用做其他用途。
让我们看一个具体的例子，一个“计数器合约”。这个合约非常简单，就是把自己的被调用次数记录在区块链上。具体需求如下：

有一个UTXO被称作“计数器合约”，该UTXO记录了计数器的初始值：]]></description><category></category></item></channel></rss>