自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 一种Oracle token方案的概述

一种Oracle token方案的概述现有token方案的局限现在已经可以 在BSV链上建立带有互换(swap)功能的token合约 ,这个方案设计得很漂亮,运用的一系列技术点都值得其他开发者参考。同时这是一个纯粹的层一方案,安全性由矿工进行保证。但是该方案也有个限制:token与swap合约无法分离。也就是说token和swap合约要部署在一个UTXO中,因为swap要依赖token数据的真实性。而在采用纯粹层一方案的前提下,只有token合约中的token数据才保证真实性。这

2020-12-10 20:13:16 1027

原创 BSV上的一种可替换token的新方案:Oracle方案

问题BSV有一个基于UTXO的层一token方案,但该方案无法完全在层一辨别token的真伪。有两种思路来解决这个问题:在tx中携带历史tx链,但该方案引入了tx大小膨胀的问题。在二层识别正确的UTXO集合,相当于把一大部分防伪工作放到了二层。新方案的原理这里要介绍的Oracle方案就是采取的第二种思路。该方案原理如下:Oracle维护合法的token UTXO集合。当钱包收到一笔token UTXO时,向Oracle申请该UTXO的合法性签名。当Oracle收到一个token UTX

2020-11-17 20:01:00 957 4

原创 水龙头合约

前言水龙头是什么水龙头这个名字总会让我想起生活中把水龙头开关拧到无限接近但又不达到关闭状态的大妈们,这样可以让水一滴一滴缓慢滴出,但又不会触发水表计费,彰显出她们丰富的生活经验和生存智慧。水龙头是赠送小额比特币的服务。为了让用户可以快速尝试Bitcoin SV网络,会有人搭建水龙头服务,给用户赠送给小额比特币,这样用户就可以用这些币尝试使用Bitcoin SV网络,如:转账、测试、写入数据等。 ——wiki.bsv.info 合约需求本文介绍如何通过智能合约直接在链上提供水笼头服务。该服务

2020-10-16 16:56:30 1247 6

原创 支付通道基本原理

支付通道是指双方或多方无需信任地交换和更新tx的机制。在支付通道技术里,tx会在多方之间多次更新,除了最后一次更新需要上链,其他的更新都可以链下进行。这个特点特别适合需要快速更新tx的场景,比如频繁快速的支付等。相比每次支付都上链,支付通道的优势之一是可以节省手续费。必备知识:nSequence和nLockTime在了解支付通道之前,需要先了解比特币的两个技术点:nSequence和nLockTime。nSequence约束tx更新每个tx的每个input都有一个nSequence字段,可以把该字段

2020-07-22 21:21:42 3183 8

原创 基于BSV智能合约的棋牌类游戏设想

有了BSV的智能合约相关技术,实现棋牌类的智能合约应该是可行的。我们以中国象棋为例,设想是否可以实现这样的一个合约:合约初始化时确定对弈双方和行走顺序只有对弈双方才可以走棋只有通过对弈双方的才有权限花费合约UTXO,触发合约迁移到下一个状态。其他人无法花费合约UTXO。合约约束回合制规则每人每回合只走一步,交替走棋。不能多走,也不能破坏顺序。合约约束行走规则“马走日,象走田”等规则均由合约来约束,不符合象棋规则的走棋无法触发合约状态变迁。合约可以判断胜负一方的“将”被杀

2020-07-21 16:36:15 2231

原创 R-Puzzle基本原理

长话短说普通的ECDSA签名校验是校验整个签名与预期是否一致,而R-Puzzle仅校验ECDSA签名中的r是否与预期的一样。ECDSA签名ECDSA签名需要用到的信息:基点:GG的阶:n签名者的私钥:s,从私钥可计算出公钥P = s * G待签名的信息:m签名过程:生成一个新的随机私钥k,从私钥可计算出其公钥R = k * G。R的横坐标标记为xR,纵坐标标记为yR。令 r = xR mod n计算 H = Hash(m)按照数据类型转换规则,将H转化为一个大端

2020-07-19 12:48:50 1151

原创 基于BSV的存储证明

场景假设Alice希望把自己的一个文件存储起来,Bob可以提供存储服务。所以Alice把文件给了Bob,但Alice并不信任Bob真的在帮她存储文件,所以Alice需要让Bob定期证明他正在保存完整的文件。只要Bob证明了他正在存储完整文件,那么Alice就会给Bob一些存储奖励。为了降低成本,Alice和Bob都不希望这个证明过程传输完整的文件。解决方案核心方案Alice为了让Bob证明他存储了完整的文件,她需要给Bob提出一个问题,这个问题只有拥有完整文件才可以解答出来。所以上述场景的核心方案就

2020-06-30 12:07:33 685

原创 BSV智能合约(四):OP_PUSH_TX背后的故事

该技术由nChain的前研究员Ying Chan在2016/2017年提出。nChain有大约至少9项专利与该技术有关。2018年BCH与BSV分叉前,nChain曾提出过该技术,但遭到质疑,方案被认为可能行不通,并且会导致脚本体积过大。2020年初sCrypt团队实现了该方案,证明这个方案是可行的,并且在BSV上TX体积(约2K字节)并不是问题。BCH也有类似的技术方案,不过并不是通过原有操作码OP_CHECKSIG来实现的,而是通过引入新操作码OP_CHECKDATASIG来实现。是否引入新操作.

2020-06-11 14:51:15 1382

原创 BSV智能合约(三):神奇的OP_CHECKSIG

上一篇我们分析了计数器合约的代码,其中最关键的问题是:如何保证sighashPreimage参数的真实性。要弄清楚这个问题,先要从比特币脚本的操作码OP_CHECKSIG说起。OP_CHECKSIG用于验证ECDSA签名。ECDSA签名的验证需要如下三个参数:公钥:签名私钥对应的公钥。被签名数据:被签名的数据的Hash值。签名。如果签名是由公钥对应的私钥针对数据进行签署的,那么签名验证成功,否则失败。而OP_CHECKSIG验证的ECDSA签名,只需要公钥和签名两个参数。为什么没有“被签名数据

2020-06-11 14:49:35 2016

原创 BSV智能合约(二):计数器合约代码分析

为了实现上一篇文章中说的“计数器合约”,需要介绍BSV上的高级语言sCrypt,并解释如何用sCrypt实现这个合约。sCrypt和BSV脚本的关系就像C语言和汇编语言的关系。通过sCrypt VS Code插件,可以把sCrypt编译成BSV脚本语言,还可以在VSCode中进行调试。sCrypt语言实现的“计数器合约”代码如下。一会我们会详细分析。contract Counter { public function increment(bytes sighashPreimage, int a

2020-06-11 14:47:41 2445

原创 BSV智能合约(一):看似不可能完成的任务

BSV智能合约(一):看似不可能完成的任务如果你转出了一笔BSV,你还能控制这些BSV如何被使用吗?可能很多人的答案是:不能。一旦币被转出,就意味着失去了控制,收到币的人,想怎么用就怎么用。而实际上,跟很多人的想法相反,BSV是可以通过脚本来控制转出去的币的,这些币只能按照脚本已经规定好的方式使用,而不能用做其他用途。让我们看一个具体的例子,一个“计数器合约”。这个合约非常简单,就是把自己的被调用次数记录在区块链上。具体需求如下:有一个UTXO被称作“计数器合约”,该UTXO记录了计数器的初始值:

2020-06-11 14:40:38 4053 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除