DeFi之公链数据PK

共识大学  水手  2021-06-28 19:51:14  发布在 区块链社区 233  0
经济学家任泽平说过:“房价短期看金融,中期看政策,长期看人口”。这句话说得很好,套用在币圈,笔者觉得:币价短期看热度,中期看应用,长期看用户。短期来看,TOKEN的价值取决于热度,热度来了,买入的就多,价格就上涨;随着时间的推移,用户就会衡量这个TOKEN的应用,这个币的价值,用户开始考虑抛售还是继续持有;长期来看,TOKEN的价值还是取决于用户,岁月变迁,如果TOKEN的用户不减反增,那么TOKEN的价值就会水涨船高。

今日我们选取了DeFi领域目前比较火热的4条公链(ETH,BSC,HECO,MATIC),这4条公链每日的交易笔数都在百万级别。百万级别交易笔数的公链还是屈指可数的,当然还有一条公链TRX每日交易笔数500万笔,我们暂且不议。

我们从以下维度来评判和打分:每日交易笔数,每笔交易费和每日手续费,增发数量,链上应用,DEX市值,上架交易所,项目热度,项目安全性,上手难度,推特关注等十个维度,总分100分,每一项10分,数据来自于各自的浏览器,网上公开的数据,一家之言,仅供参考。

一、每日交易笔数

每日交易笔数反应链上的活跃度,交易笔数越多,反应链上用户数也越多,一定程度反应链上的应用的活跃度。

ETH
BSC
HECO
MATIC
每日交易笔数M(百万)
1.1

4.4

1.1

6.3

得分

2

8

3

10

在这一项中,MATIC的每日交易笔数最高,得分是最高的。每日交易笔数6.3百万笔。我以MATIC作为满分标准,其他的链依此打分。

二、每笔交易费和每日手续费

每笔转账的费用关系到矿工的收益,也直接影响到用户的体验,转账费用不是越高越好,但是也不是越低越好,合理的转账费用既要让矿工有利可图,又让用户保持粘性,两者需要平衡。4条公链中,以太坊最贵,BSC次之,其他的2条链最便宜。站在用户角度,越低越好,最好零费用。每日手续费的计算方式为:交易笔数乘以每笔的交易费用,再折算成美元。例如ETH每笔手续费1美金,每日交易笔数110万笔,产生手续费110万美金;费用都是使用公链的用户支出的,每日手续费越高,矿工获利越多,相对应于用户使用成本越高。HECO和MATIC处于项目的早期,费用低吸引用户实属无奈。到底多少手续费是合理的呢?没有统一的标准。这里我们给HECO和MATIC打满分,为什么?为他们的无私奉献。

ETH
BSC
HECO
MATIC
每笔交易费
1美金
0.1美元
0.001美元
忽略不计
每日手续费
100万美金
约32万美金

2000美金

3000美金
得分

1
3

10

10

三、增发数量

以太坊矿工不仅拿手续费,还拿增发的币,确实挣的盘满钵满,损失的确是以太坊的用户。我们通常认为代币的增发是稀释了现在持币者的份额,特别是那种无限增发的。以太坊,MATIC现在通过质押奖励节点新的TOKEN,以太坊每年增发3%。BSC和HECO无增发。

ETH

BSC

HECO

MATIC

增发数量
3%

无增发
无增发
目前10%
得分

3

10

10

1

四、链上应用

DeFi上的应用可以粗略分为稳定币、借贷、去中心化交易所、衍生品等。以太坊是DeFi的领域的龙头,无论是应用质量和应用的广度都数第一。以太坊满分,BSC链上则仿照ETH的主流应用,也建立了自己的一套生态体系。MATIC则通过引进了一些AAVE实现了DeFi应用升级。

ETH

BSC

HECO

MATIC

应用质量

中等

中等

得分

10

6

2

4

五、DEX市值

ETH上的DeFi项目很多,借贷和DEX很成熟,也是最具有价值的两个应用。BSC通过模仿迅速建立了类似于ETH的应用,HECO则是缺乏投资和好的开发者,MATIC通过自建和引入迅速完善了生态,但是MATIC现在大多是低价值和高容量的用例,如游戏,博彩等。

ETH
BSC
HECO
MATIC
DEX

UNI
Cake
MDEX
Quick
市值(亿美金)
80

15

1.1

4

得分

10

3

1

1

六、上架交易所

上所数量和上所质量代表了一个TOKEN在业内被接受的程度,ETH毫无疑问已经得到了全世界的认可,MATIC也得到了Coinbase的认可,BSC和HECO暂且没有得到国际主流交易所的认可。

ETH
BSC

HECO
MATIC
上架交易所

220家
  120家
  110家
  100家
得分
10

3

3

  6

七、项目热度

我们选取各自链上最活跃的项目来比较。这些都是最近兴起的项目,市值较高,热度也高,为各自带来了人流,这些早期的项目或许存在争议,但是他们取得的成绩还是比较突出的。

ETH
BSC
HECO
MATIC
项目

Shib
Safemoon

HTMOON
Decentraland

持币地址数
70万
240万
41万

10万
得分

5

10

3

  1

八、项目安全性

以太坊区块链的安全性毫无疑问。BSC采用21节点质押验证的机制,安全性没有以太坊高,其次BSC链上的最大借贷应用前些日遭到攻击,损失惨重,安全性需要加强;火币生态链连完整的DeFi项目都没有,且土狗项目一堆,官方缺乏治理;MATIC融合以太坊的DeFi应用,但是近期出现了TITAN归零项目,值得反思。

ETH
BSC
HECO
MATIC
安全性

中等
中等
中等
得分
10
5
1
  4

九、上手难度

   BSC和heco链的DeFi应用基本都是照搬ETH,共享一套地址和助记词;用户学会了ETH的应用,在BSC和HECO上面没有丝毫的难度,由于兼容以太坊虚拟机,开发者也很容易部署在BSC和HECO;MATIC则多了一步跨链操作,随着今后以太坊手续费的降低,MATIC需要想办法吸引高质量的用户,还有DeFi项目要想部署到MATIC还不是很方便。

ETH

BSC

HECO

MATIC

上手难度


中等

中等

中等

得分

10

8

8

  2

十、推特关注

现在国内的政策变得越来越严厉,国际化运作变得越来越重要;特别是对于无国界的DeFi项目,国际化运作不仅是必须,也变成越来越有效。通过一个合约地址,就可以在去中心化的DEX完成一笔交易,而无需实名认证等复杂的程序。以太坊得到了全世界的关注,币安智能链在国际运作这方便做的不错,BSC国外的用户也越来越多;HECO知名度则仅限国内,MATIC在国际的知名度也还不错。

ETH
BSC
HECO
MATIC
推特关注量
140万
76万
12万
50万
得分
10
6
1
4

最终计算得到,4条公链的得分如下:

ETH
BSC
HECO
MATIC
总分
  71
62
42
  43

你觉得这个能不能准确反映这些公链的表现呢?以太坊高高在上,BSC冉冉兴起,HECO不求上进,MATIC身为侧链,会不会反客为主?我们是希望有竞争,这样用户才能获益,一条公链独占市场不是好事,市场需要多几个竞争对手,进行差异化竞争。投资者总是喜欢找到一条高价值的公链,以上的公链后期发展如何?我们会持续跟踪。

时光素材-香车美女  (582)blockchainBTC比特币区块链www.qkl91.com

即将首发Polygon协议的VAVA是什么来头?

vavafinance  水手  2021-06-28 19:58:33  发布在 DeFi/去中心化金融 247  0
1
最近Layer2赛道十分火热,ZK-Rollup、Optimistic Rollup、Plasma、State Channels、Sidechains等多个方案齐头并进,不同方案又有着代表性的协议,例如zkSync(ZK-Rollup)、Optimism(Optimistic Rollup)、这些Layer2协议不断吸引头部DeFi项目进驻,其中最引人注目的当属Layer2多扩容方案聚合器的Polygon。

Polygon(Matic)目前聚合了侧链、Plasma等技术解决方案,生态已经吸引超过100个Dapp,

TVL一度超过100亿美金。

这样的成绩离不开Polygon的众多优势:

1.扩展性:在侧链上进行快速且低成本的交易并在主链上得到确认。以太坊是其第一个可兼容的基础链。

2.高吞吐量:单一侧链上的吞吐量最高达到10,000 TPS,多条侧链亦会进一步帮助横向扩容。

3.用户体验:顺畅的用户体验、从主链到Polygon链的开发层,附带WalletConnect支持的移动端应用和软件开发SDK。

4.安全性:Polygon链的运行者同时也是PoS系统的权益所有者。

5.公开的侧链:Polygon侧链是公开的非许可链,并且可以支持多种协议。

由于行业的头部聚集效应,以及Layer2方案聚合器的这一定位,Polygon Network在目前的基础上,必将吸引越来越多的优秀Dapp,成为以太坊生态至为关键的存在。

2
正是在这样的背景下,致力于让资产流通更高效的VAVA,顺应趋势,即将首发Polygon,目标是打造2.0版的去中心化无需审查的借贷协议。

VAVA集合了闪电贷、稳定贷、LP贷款、信贷委托、跨链桥等多种功能,用户可以将WBTC、ETH、USDT、USDC、DAI等资产存入协议获得借贷的利息收益,也可以抵押存入的资产借出不同的资产用于挖矿。

基于Polygon,VAVA的安全性和体验性等方面都能得到极大提升。

3
另外一个方面,拥有众多创新功能的VAVA,也必将给Polygon带来更大的活力,刺激Polygon生态的发展,丰富产品形态,从而进一步提升其TVL和市场影响力。

除了产品的创新,VAVA在市场层面的优势也不容小觑,目前已经有加拿大、中国、美国、印度、印尼等全球20余个国家的社区加入,这一数字还在持续扩大。

VAVA的这些优势,都将继续为Polygon增光添彩。

4
具有多项创新功能的VAVA,依靠强大的基础设施Polygon,顺势起航,与Polygon互相促进,在DeFi新一轮发展竞争中,必将形成完美的共振效果。

这样的VAVA,你期待么?

时光素材-香车美女  (581)blockchainBTC比特币区块链www.qkl91.com

此次整治影响深远,市场消化尚需时日!

比特宝宝  副船长  2021-06-28 20:18:31  发布在 区块链社区 560  0
  这次去ZG化,影响深远。市场消化至少得半年时间,且时间越久,作用力越显现。

个人猜测的影响如下,仅供参考:
1.虚拟币彻底去ZG化。主要是两方面,算力去ZG化,资金去ZG化。矿场现在关的差不多了,接下来,大概率要切断OTC。如此,大陆彻底同币圈风险隔离,同时也失去对币圈的话语权。
2.虚拟币背后的技术发展成疑。虚拟币与其背后的技术,一定程度上是相生相伴,无论大陆这次整顿的出发点如何,都将客观上对其背后的技术发展造成重大影响,区块链以后还提不提都很难说,更不要说类似L2的那些前沿技术。

时光素材-香车美女  (580)blockchainBTC比特币区块链www.qkl91.com

如果上天让我在2016年进入币圈,我一定会投以太坊。

mtoken 杯「我的 Eth2」 
天使之路BB  副船长  2021-06-26 19:49:13  发布在 区块链社区  来自App 2638  2
2016年,我还不知道什么是数字货币,比特币,以太坊更是不清楚。 如果上天让我在2016年进入币圈,我一定会投以太坊。
时间回到2016年,那个时候以太坊价格很低,国内真正了解并投资以太坊的人不多,也有一部分人通过早期投资以太坊实现了财富自由。
我也是从那时期开始了解到以太坊天才少年V神,以太坊白皮书发布时,V神才只有19岁,所以很多人都说V神是天才少年。
说到以太坊,一定要介绍一下这位天才少年:
以太坊联合创始人,Vitalik Buterin维塔利克布特林,币圈人称 V 神,俄罗斯人。
V神出生于俄罗斯,4岁开始接触编程;6 岁,同家人移民加拿大,拥有俄罗斯、加拿大双重国籍;7岁创建「兔子百科全书」的复杂文档;10岁便能用同龄人的两倍速进行三位数的心算;12岁时就会用C++语言,撰写简单的游戏;19 岁大学辍学;20岁成为以太坊联合创始人
V神于2013年发表了以太坊的白皮书,2014年拿下了世界科技奖。
V神的一句话非常有哲理:他不希望以太坊成为狂欢下的泡沫,我们都应该更成熟的看待区块链2.0如何改变世界。
现在以太坊的价格确实很高,风投机构手中的筹码比较多,庄家随时有可能套现离场,年前到现在以太坊的价格涨幅超过了10倍,对于现在想投资以太坊的朋友们希望可以慎重考虑一下。
一、什么是以太坊?
以太坊是一个基于区块链的平台,供开发者构建和运营应用程序,它是一个开源的区块链网络。
它的出现就是为了解决比特币开发者所遇到的技术困难,比如不完整的基础设施和程序语言。
以太坊平台就是为了降低区块链开发者的门槛和成本,提供更多的工具来帮助开发者在区块链上使用智能合约的服务,同时也方便了这些应用在未来的开发或是维护。
目前有非常多的公链正在做区块链开发平台,它们试图追赶和超越以太坊,但是直到今天没有一个成功超越以太坊,除了比特币。
二、以太坊ETH的作用:
如果你想使用平台上的智能合约服务,你就必须拥有以太币货币ETH,然后你就可以在以太坊的平台上执行智能合约所需要的验证和手续费,通常我们称手续费为GAS。
现在以太坊网络非常拥堵,一笔以太坊转账交易虽然成功扣掉GAS费用,但是也会交易失败,这一点也是它和别的公链不同的地方。
三、以太坊2.0升级
以太坊2.0升级就是将以太坊的共识机制从工作量证明(Pow)转换到权益证明(PoS),出块方式从矿工挖矿(mining)转变为质押验证(validating),以太坊2.0将以太坊网络进行分片,分解成为64个独立的“碎片(shard)”,从而提升整个网络的性能,每秒交易量可以从15笔提升到10万笔,升级后以太坊网络的交易将不再拥堵,并能解决高昂的交易手续费。
在 ETH 2.0 下,任何拥有 32 ETH 的人都可以质押他们的 ETH 成为验证者 / 节点。由于验证者也将充当节点,因此激励也将做出适当调整,更重要的是,将有足够的验证者使节点分布足够广和分散。
我们可以从区块链钱包数据中看到目前有很多的用户参与了32个ETH质押。
目前以太坊还处于Eth 2.0过渡的第1阶段:协调Eth2.0网络中的出块和出块奖励的信标链(Beacon Chain)已经在2020年12月1日上线。但从PoW向PoS过渡还有许多技术问题需要解决,预计到2022年Eth 2.0才能完成。通过区块浏览器提供的一些实时数据,我们可以更直观地看到Eth 2.0目前的进展。
目前以太坊的价值是否存在很大泡沫,这一点非常类似互联网早期科技泡沫,一直关注以太坊是你最应该做的事,因为只有真正理解和熟悉以太坊,以后以太坊才会为你带来财富。
V神手中还持有30多万个ETH,这就是他的财富密码。
用于链节点社区imToken杯「我的Eth2」征文大赛?https://www.chainnode.com/post/587419

时光素材-香车美女  (58)blockchainBTC比特币区块链www.qkl91.com

运行无头节点需要哪些二进制文件?

有很多关于在Linux上安装Bitcoin Core的指南,最流行的建议是:
安装-m 0755-o root-g root-t/usr/local/bin bitcoin-0.21.1/bin/*
这是一个未归档的文件树:
.
├── SHA256SUMS.asc公司
├── 比特币-0.21.1
│   ├── 自述文件.md
│   ├── 箱子
│   │   ├── 比特币cli
│   │   ├── 比特币qt
│   │   ├── 比特币发送
│   │   ├── 比特币钱包
│   │   ├── 比特币
│   │   └── 测试比特币
│   ├── 包括
│   │   └── 比特币.h
│   ├── 库
│   │   ├── libbitcoinconsunsus.so->libbitcoinconsunsus.so.0.0
│   │   ├── libbitcoinsensus.so.0->libbitcoinsensus.so.0.0
│   │   └── libBitCoin共识.so.0.0.0
│   └── 分享
│       └── 男人
│           └── 男1
│               ├── 比特币cli.1
│               ├── 比特币qt.1
│               ├── 比特币-tx.1
│               ├── 比特币钱包.1
│               └── 比特币1
├── 比特币-0.21.1-x8664-linux-gnu.tar.gz
└── laanwj发布.asc
所以看起来这个命令复制了6个二进制文件,并且没有安装手册页。有必要复制所有这些二进制文件来运行无头节点而不出现任何问题吗?我一直在直接使用bitcoind和bitcoin cli,所以我很确定它们是必需的,但是我没有找到关于其余二进制文件的任何信息。
安装
分享
改进这个问题
跟随
23小时前问的
伊戈尔·布贝洛夫
11333青铜徽章
新贡献者
添加评论
1个答案
4
热释光;你不需要任何二进制文件,除了你想调用的那些。
让我看一下你的单子:
asc:一个PGP签名的SHA256SUMS文件,包含所有分发文件的SHA256校验和。这样做的目的纯粹是让您验证您拥有合法的二进制文件。
bitcoin-0.21.1/README.md:包含常规文档的自述文件
bitcoin-0.21.1/bin/bitcoin-cli:命令行工具将命令发送到正在运行的bitcoind或bitcoin qt-server实例。
bitcoin-0.21.1/bin/bitcoin-qt:比特币核心服务器二进制文件,包括qt GUI。
bitcoin-0.21.1/bin/bitcoin-tx:创建/操作/签署原始交易的独立工具。
bitcoin-0.21.1/bin/bitcoin-wallet:对bitcoin Core wallet.dat文件执行操作的独立工具,而这些文件当前未加载到bitcoind或bitcoin qt实例中。
bitcoin-0.21.1/bin/bitcoind:比特币核心服务器二进制文件,不包括GUI。
bitcoin-0.21.1/bin/test\比特币:实现所有比特币核心单元测试的二进制文件。当这个比特币核心的构建被创建时,它已经被验证通过了所有的测试,但是你当然也可以在自己的系统上自由运行它。
bitcoin-0.21.1/include/bitcoinsensus.h:C头文件,适用于希望使用libbitcoinsus.so库构建软件的用户。
bitcoin-0.21.1/lib/libbitcoinsensus.so*:共享库,您可以将自己的软件与之链接。它实现了与比特币核心完全相同的脚本验证规则,因此无需自己重新实现共识逻辑。
比特币-0.21.1/man/man1/*:手册页
bitcoin-0.21.1-x86_64-linux-gnu.tar.gz:分发tarball
laanwj-releases.asc:用于签署发布的PGP密钥
分享
改进这个答案
跟随
19小时前回答的
彼得·维尔
69.2k88金徽章147147银徽章224224铜徽章
添加评论

时光素材-香车美女  (579)blockchainBTC比特币区块链www.qkl91.com

BIP39英文词表

翻阅GitHub上英文BIP39列表中的2048个单词,我可以看到有很多单词与一个或多个其他单词只有一个字母不同。这一点本身就很弱,因为在列表中很容易把一个词错当成另一个词。它也不是容错的。德语列表readme.md似乎表示,德语列表经过了深思熟虑的测试和构建。英语名单将无法通过德语名单通过的那种测试。
BIP39有标准吗?
是否有一套经批准的符合性测试或经批准的符合性测试工具,可供英文单词表进行测试,并随后使其更坚固、更有弹性,以防污渍和褪色?
BIP39是否定义了一种进化单词表的机制?
就目前情况而言,我还没有准备好相信一个英国种子序列。
纸钱包
种子
分享
改进这个问题
跟随
20小时前问的
艾玛·阿特金森
12344青铜徽章
新贡献者
添加评论
1个答案

BIP39有标准吗?
BIP39说:
理想的词表具有以下特点:
a) 巧妙地选词
wordlist的创建方式足以输入前四个字母来明确标识单词
b) 避免使用类似词语
像“build”和“builded”,“woman”和“women”,或者“quick”和“quicky”这样的词对不仅使记忆句子变得困难,而且更容易出错,更难猜
c) 排序词表
单词列表是排序的,这允许更有效地查找代码单词(即,实现可以使用二进制搜索而不是线性搜索)
这也允许使用trie(前缀树),例如用于更好的压缩
wordlist可以包含本机字符,但必须使用规范化表单兼容性分解(NFKD)以UTF-8编码。
我认为BIP39本身没有任何一致性测试。由于比特币(可以说)尽可能分散,实际上没有任何个人或机构可以权威或正式批准列表或测试。
在BIP39单词表的列表中,有一些附加的标准已经应用于英语以外的一些语言。
我相信,经过精心准备,您可以在比特币开发社区的首选论坛上与他们进行讨论,然后尝试制定一个BIP,该BIP可能会在开发人员和更广泛的社区中获得广泛支持,并提交您的BIP以取代BIP39。您必须确保其他期望值较低的人愿意接受中断,或者为BIP39和使用它的程序的兼容性做出谨慎的规定。
分享
改进这个答案
跟随
18小时前编辑的

时光素材-香车美女  (578)blockchainBTC比特币区块链www.qkl91.com

拥有一个大的mempool并允许一个更大的事务祖先集如何改变与同龄人的交互?

默认情况下,Bitcoin Core最多允许300 MiB的mempool数据,并将未确认的事务树限制为最多25个事务和101 kvB事务数据的祖先集。因为这些是配置值,所以显然可以使用其他值。这将如何改变节点与其对等节点的交互?节点发送的数据是否超出了节点的首选项,并且节点在到达时会丢弃这些数据,或者节点是否会通知其节点发送什么?这对于mempool数据和未确认的链是一样的吗?如果您允许通过更高的值获得更多的数据,那么当节点的待办事项清除到足以让其接受数据时,节点是否会将以前不可接受的数据转发给其对等节点?
未确认交易
内存池
同龄人
继电器
分享
改进这个问题
跟随
6月20日18:45问
墨奇♦
54.9K33333金徽章152152银徽章479479铜徽章
添加评论
1个答案
0
这将如何改变节点与其对等节点的交互?节点发送的数据是否超出了节点的首选项,并且节点在到达时会丢弃这些数据,或者节点是否会通知其节点发送什么?
该协议支持费用过滤命令,简单地说,只中继满足特定费率的事务,而不低于此费率。这防止了无意义的事务转发,这将导致立即从备忘录中逐出。
如果您允许通过更高的值获得更多的数据,那么当节点的待办事项清除到足以让其接受数据时,节点是否会将以前不可接受的数据转发给其对等节点?
不会。比特币中的钱包如果没有得到确认,预计会定期重新发送交易。如果他们能在晚些时候以较小的内存池压力成功转播,就需要重新转播。
分享
改进这个答案
跟随
6月20日13:21回答
匿名的
13.6k22金徽章2020银徽章4141铜徽章
添加评论
你的答案

时光素材-香车美女  (577)blockchainBTC比特币区块链www.qkl91.com

如何配置比特币核心构建以同时获取构建和安装路径?

‘我正在尝试构建比特币核心,如果我理解正确,configure脚本将使用–prefix=选项两次,一次用于包含依赖构建(来自depends/README.md):
**默认情况下,Bitcoin Core的configure脚本将忽略depends输出
命令它从版本中获取库、工具和设置,
必须将它指向
建造。在上面的示例中,将使用名为x86_64-w64-mingw32的前缀dir
创建。要将其用于比特币:
./configure–prefix=$PWD/dependens/x86\u 64-w64-mingw32
以及–prefix的另一个用法(通常在configure中使用),用于指定非标准安装位置(来自./configure–help的输出):
默认情况下,“make install”将安装中的所有文件
`/usr/local/bin’、`/usr/local/lib’等。您可以指定
使用“–prefix”的安装前缀不是“/usr/local”,
例如“–prefix=$HOME”。
如何同时指定安装路径和依赖路径?
比特币核心
比特币核心开发
分享
改进这个问题
跟随
2月3日20点4分被问到
维兰德·格梅纳
1
添加评论
1个答案
0
不能使用./configure设置安装路径,但只能在运行make install时设置。您需要为./configure指定–prefix=once,为make install指定once。
分享
改进这个答案
跟随
2月3日下午13点34分回复
欧姆表
9966青铜徽章
make:无法识别的选项’–prefix=/home/..-2月3日下午14:32
另一个选项可能是使用DESTDIR:gnu.org/prep/standards/html\u node/DESTDIR.html。如果可以的话,也许可以在同一个./configure命令中使用–prefix=和DESTDIR=ohmyfromage 2月3日20时16分02秒
添加评论

时光素材-香车美女  (576)blockchainBTC比特币区块链www.qkl91.com

创建见证签名:非强制脚本验证标志(对于失败的检查(MULTI)SIG操作,签名必须为零)

o我正试着按照bip143中的描述做我自己的证人签名。我有正确验证示例签名的代码,所以我认为我掌握了基本的签名和验证。我有代码可以正确地验证bip143中的签名,并且使用相同的代码可以正确地验证这个输出,所以我不确定如何确定出了什么问题。我得到的错误是
错误代码:-26
错误消息:
非强制脚本验证标志(非规范DER签名)
我怀疑我并没有改变某些东西的字节顺序,但我真的不知道如何进一步诊断这个问题。
—-未签名事务——-
0200000000102303E285BB228344346ACB5292397A7610103EFCD0182C4CF95B4D01B2BDAD400000000000FFFFFF02400D030000000000016001453F0B90D7BE69D4F5F1356908A9E12EF93561DF74E0022A0000000160140F54E16BD59DA94840741B69AB9DB99467A8580000000000
——-结束未签名事务——
dhash(prevouts)=02303E285BB228344346ACB5292397A761103EFCD0182C4CF95B4D01B2BDAD4000000000
dhash(序列)=FFFFFF
dhash(输出)=400D0300000000000001453F0B90D7BE69D4F5F1356908A9E12FEF93561DF74E0022A01000000140F54E16BD59DA94840741B69AB9B9DB99467A858
版本:02000000
哈希输出:9ebc8589966e2dd13cd64af1835262c2d8e931b4388a8ebe76620814b4f407bd
哈希序列:3bb13029ce7b1f559ef5e747fcac439f1455a2ec7c5f09b72290795e70665044
输出点:02303E285BB228344346ACB5292397A761103EFCD0182C4CF95B4D01B2BDAD4000000000
脚本代码:1976a914992fda25fdf8447092aa223a34bedd3572173d8688ac
金额:00f2052a01000000
N序列:FFFFFF
哈希输出a54e6a8744fa773a5f1c64d7f60d53efd69f8d76e85e7817970a87990874e4c1
n锁定时间00000000
Nhash01000000型
预哈希图像:0200000009EBC8589966E2DD13CD64AF1835262C2D8E931B4388A8EBE76620814B4F407BD3BB13029CE7B1F559EF5E747FCAC439F1455A2EC7C5F09B72290795E7066504402303E285BB228344346ACB52397A7610103EFCD0182C4CF95B4D01BDAD40000000001976A914992FDA25FDF8447092AA223A34BEDD572173D8688AC00F2052A010000FFFFFFFFA54E6A8744FA773A5F1C60D53EFD69E78179A990874E4C10000000001000000
dhashed图像:4f8fce636bb4a44aa6a241e9597bbe54fce3bfe3426a49a94c5b006d42eac007
图纸编号:2cbb748d06a1b87c933a3118d8c2a5a0ab02111 bae777a9e52ba8571eee2d549e80a6e4cef24a172e64d11aa7b83c8005fe6fc078307b9e663ef9eb14fce05a3
订单号:304402202CBB748D06A1B87C933A3118D8C2A5A0AB02111BAE777A9E52BA8571EEE2D5490220E80A6E4CEF24A172E64D1AA7B83C8005FE6FC078307B9E663EF9EB14FCE05A3
脚本发布键:992fda25fdf8447092aa223a34bedd3572173d86
出版编号:0392ff36d0ae9f3a74c0483fd309ff9144972b1dce6d6dfe4d9de474c721b36521
—-已签署交易——-
0200000000000102303E285BB228344346ACB5292397A7610103EFCD0182C4CF95B4D01B2BDAD400000000000FFFFFF02400D030000000000016001453F0B90D7BE69D4F5F1356908A9E12EF93561DF74E0022A0000000160140F54E16BD59DA94840741B69AB9DB99467A8580247304402202CBB748D06A1B87C933A3118D8C2A5A002111BAE777A9E52BA8571EEE2D5490220E80E4CEF1172AE7B83C8005FE078307B9E663EF9EB14FCE05A301210392FF36D0AE9F3A74C0483FD309FF9144972B1DCE6DFE4D9DE474C721B36520000000
——-结束已签名事务——
这是在我的regtest上运行的。我可以提供人们可能认为有用的任何其他信息。我花了很多时间比较每一个可能的例子之前,所有这里张贴。我知道它说的是非共通的der sig,但是我的研究,其他人说错误发生在很多不同的事情出错的时候。另外,当我将签名与核心签名进行比较时,它们在格式上与“30440220”、32字节、0220和其他32字节完全匹配。唯一不同的是实际的sig数据。另外,在使用本机connical DER输出时也会出现相同的错误。一如既往,我们非常感谢您的帮助
—–更新—–
因此,上面的脚本的问题主要是没有正确地进行DER编码,这意味着如果s或r most MSB>0x80,它会将其视为负数,因为它是一个有符号整数。在本例中,S的MSB是0xE8,大于0x80。比特币有一个策略,它实际上必须小于ecdsa曲线值“n”。下面首先是纠正问题的代码,我可以验证签名(但错误仍然存在于比特币核心中)。在python中反转S的代码:
n=11579208923731619542357098500868790785283756427907404038260516314181494337
s=字节数组(s\U字节)
辛特=0
cnt=31
对于s中的bb:
sint+=bb<<cnt*8
cnt-=1
如果sint>=n/2:
打印(“否定”)
sint=n-sint
s=字节数组(sint.to\字节(32,byteorder=’big’))
还不错。至于r,比特币核心只是重新签名,直到它低于0x80。如果der编码器正确地填充了MSB,则其值更高是合法的。我也是这么做的。下面是一个已更正问题的新事务,尽管我仍然得到相同的错误:-/。
—-未签名事务——-
0200000000102303E285BB228344346ACB5292397A761103EFCD0182C4CF95B4D01B2BDAD400000000000FFFFFF02400D030000000000016001453F0B90D7BE69D4F5F1356908A9E12EF93561DF74E0022A00000001601

hat不是有效的DER编码。当顶部(第一个)字节>=0x80时,表示的数字被解释为负数。当编码的值大于2^255时,意味着必须在前面再加一个0字节。比特币网络实际上还有一个额外的限制,要求签名中的S值低于n/2。这非常简单:当S>=n/2时,取反(替换为n-S)Pieter Wuille 6月22日1:08
抱歉,我不得不试一下。好的,所以当我使用本机规范DER格式化时,它有时会有前导0,并且长了一个。为了确保我能理解,基本上,当它大于0x80,而不是仅仅加上00,我们就否定了整个S?如果s[0]>0x80,s=0xFFFFFFFF…-s?-6月22日下午1:30
@我试过我认为正确的方法。还没有成功。当MSB为1时求S的反,并且不添加前导零,现在通常不会验证。比特币核心如何知道你是否反转了它6月22日下午2:01
这样做的原因是可塑性:我们不希望第三方中继交易,以改变它,使它txid改变,但不使它无效。结果表明,对于ECDSA,如果(r,s)是有效的签名,那么(r,n-s)也是有效的签名。为了避免这种影响,比特币核心有一个政策规则,即它只中继s值小于n/2的签名的交易。它不需要知道它是否被否定,因为这两种形式都是同等有效的ECDSAPieter Wuille 6月22日3:11
1
注意,n是一个非常重要的数字,大约是2^256-1.5*2^128(搜索secp256k1曲线顺序),R和s用大端表示法编码Pieter Wuille 6月22日3:12
再显示7条评论
1个答案
0
好吧,我想出来了!大约一周后:-D。我想发布这篇文章是因为我花了上周的时间学习比特币核心,以便在sighash期间输出间歇值进行比较。任何其他需要真正了解核心工作原理的人,希望这会非常有帮助。首先,我的具体问题是:我的输出脚本完全不正确,我想我把锁定脚本和解锁脚本弄混了,这仍然不应该使签名无效,但是你也注意到在这个例子中,输出是这样的:
202CB206000000001976A9148280B37DF378DB99F66F85C95A783A76AC7A6D5988AC
第一个0x19不是脚本公钥的一部分(decode raw transaction显示它的方式)。所以在描述中
如果sighash类型既不是SINGLE也不是NONE,则hashOutputs是使用scriptPubKey(在CTxOuts中序列化为脚本)序列化所有输出量(8字节小endian)的双SHA256;
使用长度前缀0x19进行哈希运算。我在整个事务中包含了长度,所以它仍然可以很好地解码,但不是以我散列的方式。简单的误会。
下面是我如何构建和修改核心(0.21.1)以输出值来解决这个问题
我主要遵循这个例子https://jonatack.github.io/articles/how-to-compile-bitcoin-core-and-run-the-tests,基本上安装了该列表中的大多数依赖项
export BDB_PREFIX=’/home/ubuntu/btc/bitcoinsource/bitcoin-0.21.1/db4′
./configure BDB\u LIBS=“-L${BDB\u PREFIX}/lib-ldb\u cxx-4.8”BDB\u CFLAGS=“-I${BDB\u PREFIX}/include”–启用调试
制作
注意–enable debug的用法。我认为这是必要的,让你使用gdb?我偶尔会在日志文件中遇到线程锁定错误,这会导致它在使用wallet api时在调试模式下崩溃。
我创建了一个单独的bin文件夹,其中包含一些指向4个主要二进制可执行文件的sym链接。然后编辑/etc/environment将路径附加到该文件夹。然后运行“source/etc/environment”。这使您可以从任何地方运行二进制文件。
现在可以运行bitcoind-regtest-daemon了。从这里您可以进入构建和运行gdb二进制文件的源代码,并附加到进程。
Modify<bitcoin\u dir>/src/script.interpreter.cpp在顶部,我编写了一些基本函数来获取一些不同的变量类型并打印为十六进制。抱歉,我是C人,不是C++。我创建了一个单独的日志文件,这样就不会弄乱bitcoind的主日志

td::字符串hexhalftostr(unsigned char val)
{
if(val<=9)
返回std::to\字符串(val);
else if(val==10)
返回“A”;
else if(val==11)
返回“B”;
else if(val==12)
返回“C”;
else if(val==13)
返回“D”;
else if(val==14)
返回“E”;
else if(val==15)
返回“F”;
否则返回“”;
}
void logbytes(无符号字符*数据,int len)
{
std::流myfile;
myfile.open(“/home/ubuntu/btc/bitcoinsource/bitcoin-0.21.1/special.log”,std::ios\u base::app);
std::string ss=“”;
对于(int i=0;我<len;i++)
{
字符lsb,msb;
lsb=0x0f&amp;数据[i];
msb=0x0f&amp;(数据[i]<<4);
ss+=hexhalftostr(msb)+hexhalftostr(lsb);
}
我的文件<<ss;
myfile.close();
}
void logbigint(uint256数据)
{
logbytes(data.data(),32);
}
void logint(无符号int数据)
{
无符号字符数组字节[4];
对于(int i=0;i<4;i++)
arrayOfByte[i]=(数据<<(i*8));
对数字节(arrayOfByte,4);
}
void loglong(无符号长数据)
{
无符号字符数组字节[8];
对于(int i=0;i<8;i++)
arrayOfByte[i]=(数据<<(i*8));
对数字节(arrayOfByte,8);
}
void logtext(std::string ss)
{
std::流myfile;
myfile.open(“/home/ubuntu/btc/bitcoinsource/bitcoin-0.21.1/special.log”,std::ios\u base::app);
我的文件<<ss;
myfile.close();
}
SignatureHash是一个函数,我们可以在计算它们时实际输出它们
日志文本(“\n版本:”);
登录(txTo.version);
日志文本(“\nHashRevOuts:”);
logbigint(hashPrevouts);
logtext(“\nHashQuence:”);
logbigint(哈希序列);
日志文本(“\n点:”);
logbigint(txTo.vin[nIn].prevout.hash);
登录(txTo.vin[nIn].prevout.n);
//不知道如何获取字节
////日志文本(“\nscriptCode:”);
////logbigint(脚本代码);
日志文本(“\n数量:”);
loglong(数量);
日志文本(“\n序列:”);
登录(txTo.vin[nIn].n序列);
日志文本(“\nHaoutputs:”);
logbigint(哈希输出);
logtext(“\nLockTime:”);
登录(txTo.nLockTime);
日志文本(“\nhashType:”);
登录(nHashType);
函数的返回必须被替换,因为sha256散列会消耗数据
return ss.GetHash();
变成
uint256 sighash=ss.GetHash();
日志文本(“\n隐藏图像:”);
logbigint(sighash);
日志文本(“\n”);
//return ss.GetHash();
返灰;
我建议设置一个断点并逐步执行“EvalScript”函数。这是所有魔术发生的地方,并且对于教育自己实际比特币脚本如何运行是非常好的,因为每个错误代码包含几乎无限的错误,我不确定有没有其他方法来调试你的代码而不这样做。
分享
改进这个答案
跟随

时光素材-香车美女  (575)blockchainBTC比特币区块链www.qkl91.com

闪电网络:用撤销和金钱损失欺骗节点取消交易

在阅读了本文和类似文章中有关Lightning网络的内容后,我意识到我不明白协议和系统是如何阻止以下情况的:
爱丽丝和鲍勃之间有一条固定的渠道。
最新“商定”的链外事务的事务输出在Alice一侧为1BC,在Bob一侧为1BC。
爱丽丝和鲍勃开始了一个新的交易。
Alice和Bob交换他们的部分撤销密钥。
鲍勃决定作弊,假装“消失”,不签署新的交易,不回应,但仍然是在线和监测连锁交易。
在某个时候,如果爱丽丝想释放她的1比特币,她会执行最新的“约定”交易,但她的资金会被锁定2周。
在假装没有反应的同时,Bob正在监控链,一旦发生撤销条款,就立即执行,得到两个比特币。
显然,重要的时间可能会在5到6之间流逝,但如果鲍勃能等得起的话,他就可以玩这个把戏。
似乎为了避免这种情况,新的链外事务需要通过交换吊销密钥在单个分布式事务中进行签名,但我不认为这是可行的。我读过多次提到在签署新交易之前交换密钥。
我在这里读到过一个类似的问题,但我认为它并不能真正解决我所描述的情况。
我错过了什么?
雷电网
分享
改进这个问题
跟随
12小时前问的
马克斯
2111青铜徽章
新贡献者
添加评论
1个答案
2
你接触到一个有点微妙的点,但从来没有少一点问题。我已经在渠道运营一章中一步一步地解释了:https://github.com/lnbook/lnbook/blob/develop/channel-operation.asciidoc
热释光;DR:当改变一个频道的平衡时,Alice只会在收到Bob的新状态签名后撤销她的tx和state。因此,如果Bob在这个过程中没有反应,alice死了,但是没有新的签名,那么她可以强制关闭她有签名的最新状态(因为该状态还没有被撤销)
在将余额向前移动一小段时间的同时,通道的每一方暂时有两个完全签名但未撤销的承诺交易。这是安全的,尽管发布“旧”状态并没有错,而新状态并没有完全达成一致。
分享
改进这个答案
跟随
7小时前回答的
雷内·皮克哈特
950666银牌2424铜牌
添加评论

时光素材-香车美女  (574)blockchainBTC比特币区块链www.qkl91.com