分类
Uncategorized

比特币cli如何在不同节点上获得钱包余额?

我正在制作一个比特币移动应用程序,并试图从运行在单独节点上的守护进程中获取手机上钱包的余额。移动钱包连接到此节点,可以使用任何CLI命令,如getinfo getbalance等。
我应该将哪些CLI命令传递给守护进程,以便在我的移动应用程序上提供钱包余额?
比特币核心
比特币cli
平衡
守护进程
客户端
分享
改进这个问题
跟随
7月10日18点54分问
巴尼钱伯斯
33322银牌1212铜牌
添加评论
2个答案
5
你不能,因为比特币核心不存储这样的信息。比特币核心并不存储所有地址的所有信息,它只存储自己地址的信息以及验证交易所需的较低级别的信息(地址是较高级别的抽象)。没有命令允许您获取比特币核心钱包中没有的给定地址的余额或交易,因为此类信息不可用。
分享
改进这个答案
跟随
7月10日6:01答复
麻吉弟弟周立铭♦
53.4k44金徽章5656银徽章109109青铜徽章
添加评论
0
您可以从blockchair.com下载数据库转储https://gz.blockchair.com/bitcoin/addresses/ 数据库每天更新,并且包含网络上每个地址的satoshis余额。
分享
改进这个答案
跟随
4小时前回答的
1葛兰科
111青铜徽章
新贡献者
添加评论

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

分类
Uncategorized

使用tor连接比特币网络的安全方法是什么?

我记得的一个案例是,有人因为审查而无法将他的比特币完整节点连接到网络:https://twitter.com/TheBlueMatt/status/1161291626553270272
马特建议对无法连接的人使用TOR网桥(直接/vpn/TOR无网桥)
有什么更安全的方法连接到Tor网络以便您可以使用比特币?
完整节点
托尔
分享
改进这个问题
跟随
8月30日20:50问
普拉扬克
380711金徽章66银徽章1818铜徽章
添加评论
1个答案
0
Tor和比特币
最近我读了一篇博客文章,其中强调了使用tor bridges所涉及的问题,我将总结一些我觉得有趣的事情:
作者要求不要使用未上市或私人桥梁,这与马特在上述推文中所说的相反。
收集未列出的桥梁:http://hackerfactor.com/blog/index.php?/archives/892-Tor-0day-Finding-Bridges.html文件
公共网桥:你的Tor连接看起来像成千上万的其他用户。这在数量上提供了安全性。在最坏的情况下,对手可以看到你在使用Tor,但看不到你在Tor网络上做什么。此外,如果您断开连接,然后稍后从其他位置重新连接,则不会有任何东西将您的新连接链接到以前的连接;这降低了基于连接方法进行跟踪的风险。
使用Tor有时会给你带来风险:中国和印度
如果Tor的使用可以唯一地与您关联,那么您是可识别的。可识别意味着你可能被监视。你如何连接到Tor允许你被识别。在高风险地区,使用Tor会让你成为嫌疑犯,而未列出的桥梁会让你很容易被追踪。然而,如果你被逮捕,那么官方的指控很可能是关于一个与Tor无关的话题(规避审查、散布骚乱等)。
未上市和私人网桥用户也面临着最大的风险,因为他们位于禁止直接和公共网桥连接的许可区域
如果它们是阻塞的,那么它们显式地寻找Tor用户。
白俄罗斯互联网中断印度互联网关闭
未列出的桥集非常独特,而且非常独特
如果将Tor浏览器配置为使用网桥,则在启动期间,它会立即连接到所有配置的网桥。网络上的观察者将看到从当前真实IP地址到“非常独特且有效唯一”的网桥集的连接请求。这使得跟踪你的对手知道建立连接的IP地址就是你。结合历史观察,他们可以确定您第一次请求这组桥的时间、每次访问Tor时您在哪里以及您当前所在的位置。
在浏览器关闭之前,它不会断开与已建立的网桥连接的连接。一个敌手能准确地看到你所处的桥位和你所切换到的桥位。
如果您的所有网桥都匹配我收集的一组网桥,那么我就确切地知道您使用的是哪个torexit节点以及您使用它的时间范围。虽然你不是独一无二的,但你非常与众不同。这允许我将您的真实IP地址与来自已知Tor出口节点的流量相关联。
您的未列出(或专用)网桥集存储到磁盘。如果您使用的系统从不保存到磁盘,例如Tails,那么您就可以了。只是不要重复使用桥牌。但是如果你在桌面或移动设备上使用Tor浏览器,那么你就足够独特了。
对手将用户置于一个角落:使用具有唯一跟踪属性的Tor,或者不使用Tor(为什么他们不封锁所有未上市的桥梁?也许他们还没有润滑油。或者,追踪和识别内部持不同政见者可能比阻止他们的联系要好。他们可能故意阻止安全和匿名方式连接到Tor网络,以便将您清除。)
从实际的角度来看,Tor用户应该考虑发现和连接性之间的权衡。如果您所处的环境不允许直接连接,也不允许公共网桥,那么使用Tor网络可能不够安全。
这篇博文提到了Tor浏览器的使用,当你在机器上使用带有Tor代理的Bitcoin full node时,情况可能就不一样了。然而,如果你生活在一个有政府定期审查网络的地区,提到的很多事情都很重要。
资料来源:http://hackerfactor.com/blog/index.php?/archives/893-Tor-0day-Tracking-Bridge-Users.html
可以在Windows或Ubuntu中使用Tor browser配置网桥:
Tor浏览器桥
Tails OS和其他一些Linux发行版可能有不同的设置来配置网桥:https://tails.boum.org/doc/first_steps/welcome_screen/bridge_mode/index.en.html
如果您想使用带有torproxy的网桥,则必须在/etc/tor/torrc文件中添加一些内容,并且您可以将更改与torrc文件进行比较

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

分类
Uncategorized

我应该在比特币核心提取请求的描述中包括什么?

我应该在向比特币核心回购(Bitcoin Core repo)开放的拉取请求(pull request,PR)的描述中包括什么,以帮助审阅者快速高效地审阅和测试PR?
比特币核心开发
比特币核心评论
分享
改进这个问题
跟随
昨天编辑的
昨天问
迈克尔·福克森
597277银牌2222铜牌
添加评论
1个答案
1
目前在contribution.md中有一些(有限的)指导。
拉请求的标题应以拉请求影响的组件或区域作为前缀
e、 g.共识:为BIP-XXXX OP\U CHECKAWESOMESIG添加新的操作码
pull请求的主体应该包含对补丁做了什么的充分描述,更重要的是,为什么要这样做,以及理由和推理。您应该包括对任何讨论的引用(例如,其他问题或邮件列表讨论)。
很难准确地解释PR描述中应该包含什么,因为这在很大程度上取决于它是什么类型的pull请求(新请求的描述不应该包含任何@提及。)一个小文档PR只需要一两句话来解释更改和进行更改的理由。在另一个极端,一个共识的改变将需要一个长的,详细的描述,解释历史背景,链接到以前的讨论(例如BIPs,邮件列表),并说服评论者,社区对这个改变有共识。
然而,公关作者应该设法使公关审查尽可能容易。理想情况下,评审人员应该能够从PR描述中了解PR试图做什么以及为什么,而不必探索PR链以获得所需的上下文。另外,关于审阅者应该注意什么的指针(特别是如果有特定的安全考虑)或者关于审阅者如何测试PR的指导也可能被证明是有用的。如果它很容易被审查,那么它更有可能被审查。
fanquake在这个公关评论中提供了一些额外的指导:
PR描述(和commit消息)可能包括:正在更改什么,为什么它等同于以前的检查?什么时候变的?e、 qt5.12并不是我们构建Qt的唯一版本,我们支持的最低版本仍然是5.9.x。如果所构建的Qt版本与此更改无关,为什么会这样?链接到相关的上游变更(如适用)。
您如何验证/评审员应如何验证这是一个无操作?e、 g.“如果这是对配置检查的更改,那么在更改之前和之后生成的二进制文件应该是相同的。你可以用build for compare.py来证明这一点。”
添加更多的信息不仅意味着更多的贡献者可以,或者将更有可能进行审查,而且任何与安全相关的更改都应该比“依赖项头中发生的某些更改”更好地进行总结。
公关作者还应该考虑使公关容易测试新的/经验不足的审查,尤其是如果它不是一个复杂的公关,需要大量的上下文理解。
一个很好的例子,公关的描述,为经验较少的评论家是这一个从乔恩阿塔克。它精确地列出了审阅者需要做什么来验证功能是否如所描述的那样工作,包括审阅者可以运行的确切命令。
欢迎测试和审核!如何测试:
要运行full-live仪表板(在Linux上):$`watch–interval 1
要运行完整的仪表板:$./src/bitcoin cli-netinfo 4
要查看帮助:$./src/bitcoin cli-netinfo help
查看帮助摘要:$./src/bitcoin cli-help | grep-a4netinfo
这里有Jon Atack关于向比特币核心提交拉取请求的额外指导。
分享
改进这个答案
跟随

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

分类
Uncategorized

如何在Windows、Ubuntu和Android上运行Bitcoin核心洋葱服务?

你试过在不同的平台上运行比特币核心监听吗?你有什么经验,你面对的问题,黑客,解决方法等。?
比特币核心
托尔
分享
改进这个问题
跟随
9月8日15:56问
普拉扬克
380711金徽章66银徽章1818铜徽章
添加评论
1个答案
0
窗户
您可以执行第2步和第3步中的一个步骤。第2步使用cookie进行身份验证,第3步使用密码。
下载并安装比特币核心https://bitcoincore.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-win64-setup.exe
编辑bitcoin.conf文件,输入以下内容并保存。文件的默认位置是%UserProfile%\AppData\Roaming\Bitcoin\Bitcoin.conf
倾听=1
调试=1
logips=1
测试网=1
列表=1
onlynet=洋葱
代理=127.0.0.1:9150
扭矩控制=127.0.0.1:9151
如何为Tor控件设置cookie验证?
打开C:\Users\Prayank\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\Torc并添加以下行:
HCookie身份验证1
如果已经执行了步骤2,请忽略此步骤。编辑bitcoin.conf文件,输入以下内容并保存。文件的默认位置是%UserProfile%\AppData\Roaming\Bitcoin\Bitcoin.conf
倾听=1
调试=1
logips=1
测试网=1
列表=1
onlynet=洋葱
代理=127.0.0.1:9150
扭矩控制=127.0.0.1:9151
密码=XYZ
XYZ:用明文密码替换它
如何设置Tor控件的密码?
打开命令提示符/PowerShell并运行以下命令:
cd“C:\Users\Prayank\Desktop\Tor Browser\Browser\TorBrowser\Tor”
tor—哈希密码“XYZ”>torhash.txt
打开torhash.txt文件,复制下面最后一行内容,粘贴到C:\Users\Prayank\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\torrc并保存:
哈希控制密码16:1CEDITEDOMERANDOMSHITCF8EBCD9A50CLOLCDACF
在命令提示符或PowerShell中运行以下命令,以确保与Tor control的连接正常工作:
telnet 127.0.0.1 9151验证“XYZ”
启动Tor浏览器
使用带有绿色图标的快捷方式启动Bitcoin Core Wallet(Testnet),或在命令提示符或PowerShell中运行“C:\Program Files\Bitcoin\Bitcoin qt.exe”-Testnet并相应更改路径
在控制台窗口中运行getnetworkinfo并检查localaddresses。检查是否创建了testnet3/onion\u私钥文件,并分析debug.log文件中的日志。
比特币核心
乌班图

您可以执行第2步和第3步中的一个步骤。第2步使用cookie进行身份验证,第3步使用密码。
下载比特币核心并运行以下命令:
tar xzf比特币-0.20.0-x86_64-linux-gnu.tar.gz
sudo安装-m 0755-o root-g root-t/usr/local/bin比特币-0.20.0/bin/*
/usr/local/bin/比特币qt
编辑.bitcoin/bitcoin.conf文件,输入以下内容并保存。
倾听=1
调试=1
logips=1
测试网=1
列表=1
onlynet=洋葱
代理=127.0.0.1:9050
如何设置Tor?
sudo apt安装程序
打开/etc/tor/torrc并添加以下行:
控制端口9051
Cookie身份验证1
CookieAuthFileGroup1
重启Tor:sudo/etc/init.d/Tor restart
将用户添加到Tor组:sudo usermod-a-G debian Tor<username>
运行比特币核心:/usr/local/bin/Bitcoin qt
如果已经执行了步骤2,请忽略此步骤。编辑bitcoin.conf文件,输入以下内容并保存。
倾听=1
调试=1
logips=1
测试网=1
列表=1
onlynet=洋葱
代理=127.0.0.1:9150
密码=XYZ
XYZ:用明文密码替换它
如何设置Tor控件的密码?
打开命令终端并运行以下命令:
torpass=$(tor—哈希密码“我的tor密码”)
printf“HashedControlPassword$torpass\n控制端口9051\n”| sudo tee-a/etc/tor/torrc
在控制台窗口中运行getnetworkinfo并检查localaddresses。检查是否创建了testnet3/onion\u私钥文件,并分析debug.log文件中的日志。
调试日志
比特币核心
安卓
下载、安装并运行ABCore或Nayuta Core。
纳尤塔-1纳尤塔-2纳尤塔-3
我在ABCore的设置中选择了比特币结,但是也可以选择使用比特币核。
ABCore-1 ABCore-4 ABCore-3 ABCore-2
分享
改进这个答案
跟随
9月9日9:29编辑

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

分类
Uncategorized

寻找一个小的go/golang片段来连接到比特币核心json-rpc

我以前在C++中做过,现在我正在学习Go/Gangon
我宁愿“从头开始”而不是信任第三方的图书馆
只要从golang调用json-rpc调用getrpcinfo就足够让我动起来了!
到目前为止,我的搜索只找到了整个库和应用程序
json rpc
分享
改进这个问题
跟随
问5月7日9:11
奈杰尔·夏普
2122青铜徽章
添加评论
1个答案
0
啊。。。我自己从多个渠道拿到的东西!
下面是代码片段:
包装总管
导入(
“fmt”
“io/ioutil”
“网络/http”
“字符串”
)
函数main(){
testRequest:=`{“jsonrpc”:“1.0”,“id”:“,”method“:”getrpcinfo“,”params“:[]}`
请求:=http.NewRequest(“POST”,”http://127.0.0.1:8332/“,strings.NewReader(testRequest))
请求设置密码(“,”notmypassword“)
req.Header.Add(“内容类型”,“text/plain;”)
res,e:=http.DefaultClient.Do(请求)
如果e!=无{
格式打印(e)
}其他{
延迟res.Body.Close()
正文:=ioutil.ReadAll(res.body)
fmt.Println(字符串(正文))
}
}
分享
改进这个答案
跟随

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

分类
Uncategorized

比特傻观点:大选择

 

比特傻 船长 2021-06-05 23:55:02 发布在 区块链社区 来自App

596 0

今天比特傻和好友自驾到红井路,个人认为京郊自驾最美的盘山公路。我们一起回忆,多年前,比特傻开着一辆帕萨特,一路高速180码,从北京驱车千里,到青海湖。期间撞到藏民的车,被村长威胁砸车。车陷入雪地,我们一起在冰天雪地和牵引车合利拉车。如此胆大妄为的青春。而现在比特傻开车已经十分平稳,高速也只是120,享受着和朋友的有趣的沟通。微博也不敢乱说话了。其实倒不是青春逝去了,比特傻依然年轻。是理智了,对行为的风险和收益更有心得,类似投资的视角。不是缺乏勇气,而是获得了理智。时光素材-香车美女  (272)blockchainBTC比特币区块链www.qkl91.com

分类
Uncategorized

我们要学会暴跌配置,而不是暴涨加仓……

 

菜大哥投资日记 副船长 2021-06-03 10:30:20 发布在 区块链社区

19806 0

如果你之前有遗憾没买的币,趁着这轮暴跌没破新高之前,可以配置配置。
  比如你有100万资产,主要仓位集中在比特币/以太坊。你觉得BNB不错,之前没买,想配置10万。那么可以趁暴跌,每天定投1万块,定投10天。
  同时你又看上了另外一个币,但是这个币比起BNB还是差了点。那理应配置的比BNB少一些。可以趁暴跌配置5万,每天定投1万,定投5天。
  在暴跌中配置资产,可以克制冲动,该买多少钱,心里有数。
  新高之后是不适合配置资产的,因为币价一旦暴涨,你内心是冲动的。一冲动就容易失去理智,越涨越加仓,倾其所有重仓买入,仓位管理不当酿成大错。
  我们要学会暴跌配置,而不是暴涨加仓。
  说得好每天一篇文章+一条说说的,今天又超发了,不行,得克制克制。

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

分类
Uncategorized

知道创宇区块链安全实验室|深入理解重入攻击漏洞

 

创宇区块链安全实验室 水手 2021-06-03 11:09:47 发布在 区块链社区

25227 0

前言

智能合约(英文:Smart contract )的概念于 1995 年由 Nick Szabo 首次提出,它是一种旨在以信息化方式传播、验证或执行合同的计算机协议,它允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。然而智能合约也并非是安全的,其中 重入 (Re-Entrance) 攻击漏洞是以太坊中的攻击方式之一,早在 2016 年就因为 The DAO 事件而造成了以太坊的硬分叉。

漏洞概述


在以太坊中,智能合约能够调用其他外部合约的代码,由于智能合约可以调用外部合约或者发送以太币,这些操作需要合约提交外部的调用,所以这些合约外部的调用就可以被攻击者利用造成攻击劫持,使得被攻击合约在任意位置重新执行,绕过原代码中的限制条件,从而发生重入攻击。重入攻击本质上与编程里的递归调用类似,所以当合约将以太币发送到未知地址时就可能会发生。

简单的来说,发生重入攻击漏洞的条件有 2 个:

  • 调用了外部的合约且该合约是不安全的
  • 外部合约的函数调用早于状态变量的修改

下面给出一个简单的代码片段示例:

上述代码片段就是最简单的提款操作,接下来会给大家详细分析重入攻击造成的原因。

漏洞分析

在正式的分析重入攻击之前,我们先来介绍几个重点知识。


01 转账方法

由于重入攻击会发送在转账操作时,而 Solidity 中常用的转账方法为

<address>.transfer(),<address>.send() 和 <address>.gas().call.vale()(),下面对这 3 种转账方法进行说明:

  • <address>.transfer():只会发送 2300 gas 进行调用,当发送失败时会通过 throw 来进行回滚操作,从而防止了重入攻击。
  • <address>.send():只会发送 2300 gas 进行调用,当发送失败时会返回布尔值 false,从而防止了重入攻击。
  • <address>.gas().call.vale()():在调用时会发送所有的 gas,当发送失败时会返回布尔值 false,不能有效的防止重入攻击。
02 fallback 函数

接着我们来讲解下 fallback 回退函数。
回退函数 (fallback function):回退函数是每个合约中有且仅有一个没有名字的函数,并且该函数无参数,无返回值,如下所示:

回退函数在以下几种情况中被执行: * 调用合约时没有匹配到任何一个函数; * 没有传数据; * 智能合约收到以太币(为了接受以太币,fallback 函数必被标记为 payable)。

03 漏洞代码

下面的代码就是存在重入攻击的,实现的是一个类似于公共钱包的合约,所有的用户都可以使用 deposit() 存款到 Reentrance 合约中,也可以从 Reentrance 合约中使用 withdraw() 进行提款,当然了所有人也可以使用 balanceof() 查询自己或者其他人在该合约中的余额。

首先使用一个账户 (0x5B38Da6a701c568545dCfcB03FcB875f56beddC4) 扮演受害者,将该合约在 Remix IDE 点击 Deploy 按钮进行部署。

在部署合约成功后在 VALUE 设置框中填写 5,将单位改成 ether,点击 deposit 存入 5 个以太币。

点击 wallet 查看该合约的余额,发现余额为 5 ether,说明我们的存款成功。

而下面的代码则是针对上面存在漏洞的合约进行的攻击:

使用另外一个账户 (0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2) 扮演攻击者,复制存在漏洞的合约地址到 Deploy 的设置框内,点击 Deploy 部署上面的攻击合约。

部署成功后先调用 wallet() 函数查看攻击合约的余额为 0。

攻击者先存款 1 ether 到漏洞合约中,这里设置 VALUE 为 1 ether,之后点击攻击合约的 deposit 进行存款。

再次调用合约的 wallet 函数查看漏洞合约的余额,发现已经变成了 6 ether。

攻击者 (0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2) 调用攻击合约的 attack 函数模拟攻击,之后调用被攻击合约的 wallet 函数去查看合约的余额,发现已经归零,此时回到攻击合约查看余额,发现被攻击合约中的 6 ether 已经全部提款到了攻击者合约中,这就造成了重入攻击。


04源码分析

上面讲解了如何进行重入攻击已经漏洞原因,这里梳理了漏洞源码和攻击的步骤,列出了关键代码。


相关案例


2016 年 6 月 17 日,TheDAO 项目遭到了重入攻击,导致了 300 多万个以太币被从 TheDAO 资产池中分离出来,而攻击者利用 TheDAO 智能合约中的 splitDAO() 函数重复利用自己的 DAO 资产进行重入攻击,不断的从 TheDAO 项目的资产池中将 DAO 资产分离出来并转移到自己的账户中。

下列代码为 splitDAO() 函数中的部分代码,源代码在 TokenCreation.sol 中,它会将代币从 the parent DAO 转移到 the child DAO 中。平衡数组 uint fundsToBeMoved = (balances[msg.sender] * p.splitData[0].splitBalance) / p.splitData[0].totalSupply 决定了要转移的代币数量。

下面的代码则是进行提款奖励操作,每次攻击者调用这项功能时 p.splitData[0] 都是一样的(它是 p 的一个属性,即一个固定的值),并且 p.splitData[0].totalSupply 与 balances[msg.sender] 的值由于函数顺序问题,发生在了转账操作之后,并没有被更新。

paidOut[_account] += reward 更新状态变量放在了问题代码 payOut 函数调用之后。

对_recipient 发出 .call.value 调用,转账_amount 个 Wei,.call.value 调用默认会使用当前剩余的所有 gas。


解决办法


通过上面对重入攻击的分析,我们可以发现重入攻击漏洞的重点在于使用了 fallback 等函数回调自己造成递归调用进行循环转账操作,所以针对重入攻击漏洞的解决办法有以下几种。

01使用其他转账函数

在进行以太币转账发送给外部地址时使用 Solidity 内置的 transfer() 函数,因为 transfer() 转账时只会发送 2300 gas 进行调用,这将不足以调用另一份合约,使用 transfer() 重写原合约的 withdraw() 如下:

02先修改状态变量

这种方式就是确保状态变量的修改要早于转账操作,即 Solidity 官方推荐的检查-生效-交互模式 (checks-effects-interactions)。


03使用互斥锁

互斥锁就是添加一个在代码执行过程中锁定合约的状态变量以防止重入攻击。


04使用 OpenZeppelin 官方库

OpenZeppelin 官方库中有一个专门针对重入攻击的安全合约:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/** * @dev Contract module that helps prevent reentrant calls to a function. *
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */abstract contract ReentrancyGuard {    // Booleans are more expensive than uint256 or any type that takes up a full    // word because each write operation emits an extra SLOAD to first read the    // slot’s contents, replace the bits taken up by the boolean, and then write    // back. This is the compiler’s defense against contract upgrades and    // pointer aliasing, and it cannot be disabled.
    // The values being non-zero value makes deployment a bit more expensive,    // but in exchange the refund on every call to nonReentrant will be lower in    // amount. Since refunds are capped to a percentage of the total    // transaction’s gas, it is best to keep them low in cases like this one, to    // increase the likelihood of the full refund coming into effect.    uint256 private constant _NOT_ENTERED = 1;    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor () {        _status = _NOT_ENTERED;    }
    /**     * @dev Prevents a contract from calling itself, directly or indirectly.      * Calling a `nonReentrant` function from another `nonReentrant`     * function is not supported. It is possible to prevent this from happening     * by making the `nonReentrant` function external, and make it call a      * `private` function that does the actual work.     */    modifier nonReentrant() {        // On the first call to nonReentrant, _notEntered will be true        require(_status != _ENTERED, “ReentrancyGuard: reentrant call”);
        // Any calls to nonReentrant after this point will fail        _status = _ENTERED;
        _;
        // By storing the original value once again, a refund is triggered (see        // https://eips.ethereum.org/EIPS/eip-2200)        _status = _NOT_ENTERED;    }}

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

分类
Uncategorized

PKEX:从清算角度思考未来的多链格局

 

区块链实验室zh 船员 2021-06-03 13:44:28 发布在 区块链社区

4145 0

519 大惨案你一定还历历在目,是个圈内人就很难忘记这一天,毕竟这是可以与 312「齐名」的史诗级瀑布。

你可能也听说过 XVS 在 519 当天遭遇的尴尬,XVS 遭遇了「史诗级」清算,而这场清算,本质上来说与 519 当天的暴跌几乎毫无关系

事情是这样的,众所周知 Venus 是可以抵押 XVS,借出 BTC 或者 ETH 等资产的抵押率为 80%,而 XVS 的流动性相对于主流币其实差很多。某大户发现了这个「漏洞」,便有了如下神操作:

  1. 短时间内花了几千万美元,把 XVS 的价格从 70 美元拉倒 140 美元。
  2. 高位抵押 XVS 借出了四千个 BTC 和上万个 ETH。
  3. 跑路。
  4. 任由 XVS 价格迅速下跌开始清算。
  5. XVS 由于流动性不够短时间内无法清算,给 XVS 平台造成了上亿美金的坏账。

据一位社区成员说,上百万个待清算的 XVS 低价挂在那,被清算人(大概率是机器人)花了十几个小时才慢慢买光。

于是引发了我们这样的思考:当前的多链宇宙下,是否每条链真的可以独立运行好一整套 DeFi 的金融体系?包括兑换,借代,稳定币,合成资产。

就目前的区块链现状而言,这个答案很有可能是「悬」。

无处不在的清算

清算是个平常你完全不会注意到的事情,因为确实不怎么发生。然而当极端行情来临之时,清算无处不在。

就拿 DeFi 基础四件套:兑换、借代、稳定币(这里特指 DeFi 原生加密抵押型稳定货币,比如 DAI,LUSD 等)和合成资产来说。你会发现除了兑换,其他三个都有清算机制作为其核心组件。

简单来说,不清算,无 DeFi。每次极端行情,像是 312、519,也都相当于是一次各个项目的清算机制,乃至整个 DeFi 系统「健康程度」的一次大考。

各个平台的清算各不相同,比如 MakerDAO 是资产拍卖机制,Compound 和 AAVE 是清算者直接以折扣价接管债务人的仓位机制,最近的稳定币新秀 Liquity LUSD 更是设置了三重清算(稳定池,债仓转移,全局清算)机制,有兴趣的朋友可以自行查阅,在这儿就不展开讲了。

然而无论是何种清算机制,都避不开这么基本三大步:

  1. 待清算资产打折。
  2. 清算人买走折扣价债务。
  3. 清算人卖出以折扣价买入的债务。

不难看出在整个清算系统之中,清算人这个角色,都是核心中的核心。

312 MakerDAO 清算失败简易复盘

和矿工一样,清算人也是受到经济激励的一群人。毕竟清算资产是打折出售的,只要你抢到并在足够短的时间内卖掉,这就是一笔几乎稳赚不赔的买卖。

他们时时刻刻盯着 MakerDAO、Compound、AAVE 和 Liquity 等项目里面的符合清算条件,或是临近清算的资产,待到清算发生时便一窝蜂的冲上去。就像是一群秃鹫,盯着一只濒死的兔子,待到它倒下的那一刻,便看谁俯冲的更快,抓的更准了。

估计你不难想到,这种事情怎么可能会是人用肉眼盯着,肯定都是无数个写好的机器人程序,在那无时无刻不停的监控。

以太坊是个黑暗森林,里面不光有各路套利机器人暗中潜伏,还有各路清算机器人时刻待命,甚至许多清算机器人会用到闪电贷这种高级工具进行 0 风险清算 (拿自己的钱买入打折资产再试图原价卖出,在价格迅速滑落过程中是存在「入不敷出」风险的)。

那么 312 MakerDAO 最后为什么会出现 0 元的价格赢得拍卖,从而累积了几百万坏账的情况呢?主要是因为当时 ETH 堵到 Gas 费用已经超过 1000gwei(1 ETH = 10^9Gwei) ,这导致两个后果:

  1. MakerDAO 的拍卖机制里,最拥堵的是很多出价比 0 高的兑换因为 Gas 费用不够,从而没被打包。

  2. 更关键的是,很多清算机器人在那种超高 Gas 的情况下停了。这不难理解,机器人是逐利的,当 Gas 费用太高,超过了资产折扣价,或者说每次清算失败的 Gas 成本太高,那么许多机器人便会「停机」。

这与每次 BTC 价格下跌跌破许多矿机的「关机价」导致矿机关机一个道理。据说 312 那天 MakerDAO 的拍卖到最后只剩三个清算者参与竞标,每个人(or 机器人)都以 0 元的价格赢得过拍卖。

XVS 暴露的清算深度问题

312 暴露的是 MakerDAO 在 ETH 上遭遇的「清算人买走「折扣价债务」这一步的问题,519 暴露的则是 XVS 在 BSC 上遭遇的「清算人卖出‘以折扣价买入的债务这一步的问题。

简单来说,就是当 80 美金的 XVS 打折到 70 被清算人买走,清算人却发现因为滑点以及深度的问题,量大的话再卖的时候只能卖到 65,这就尴尬了……

这也是撸走 XVS 羊毛大户原本的算盘。在自己手里 XVS 够多,想要出货,市场深度承接不住自己「砸盘」的前提下,把 XVS 抵押给系统,相当于以最高价的 80%(XVS 的抵押率)卖出了手头所有的 XVS,而接盘的则是所有清算者+无法清算所导致系统自身的坏账。

这引起了许多讨论,尤其是 XVS 作为一个流动性不那么好的资产,80% 的抵押率是在太高了,这才引发了此次坏账事件,如果抵押率是 50%,这些问题也许根本不会发生。

亦或者,只接受 BTC、ETH 这种高流动性资产做抵押,此类问题同样可以避免。那么问题来了,即便是只接受 BTC,ETH 这种高流动资产作为抵押,在多链宇宙的大环境下,清算是否会是问题呢?

多链宇宙下的清算与区块链终局

你看,清算人 Or 清算机器人本质是利益驱动的。

所以你需要保证在他买入折扣价被清算抵押品之后,可以立刻找到一个平台 (通常来讲是 Dex)以高于他买入价的价格卖出这些抵押品,保障清算人获利。

原先我们只有一个以太坊,我们有 Uniswap,我们从来不担心 WBTC、ETH 和一些主流 DeFi 币种的深度问题,所以 Compound 也好,MakerDAO、AAVE 也罢,大家没担心过「清算人卖出‘以折扣价买入’的债务」这一步会有什么问题。

然而 XVS 的事件给我们提了一个醒,即便是只接受 BTC 和 ETH 的抵押,多链宇宙下,我们的 BTC 和 ETH 够么?

你看,我们现在已经有了 ETH,EOS,TRX,BSC,HECO,Solana,Fantom,Cosmos,Polkadot,Avax……这些还都只是主链。

L2 或者侧链,我们有 Loopring,Xdai,Matic,刚刚 Rollup 家族上了 Arbitrum,过俩月还有 Optimism,再过几个月不出意外我们还会看到 ZkSync,Startware,Aztec……

貌似我还没有算一些冷门的主链譬如 Waves,Ada,老一代的 NEO,量子,IOST 等等……

如果我们认为区块链的终局,或者说至少近几年会是这样一个群雄割据的多链宇宙的话。

你觉得,每一条链上跑齐 DeFi 四大件:兑换、借代、稳定币、合成资产的可能性有多大?单就清算而言,就得满足:

  1. 这条链上有 BTC,ETH,或者说主流抵押品的 DEX

  2. 这个 DEX 的 LP 池子得够深

  3. DEX 的 LP 还得足够多。 没错,很多这些链上主流对的 LP 就是几个大户提供的,一旦清算发生时或者发生之前,他们撤了池子咋办?

按照这个标准,毫不客气地说,上面列的几十条链,能够符合的其实真没几个。

如果你认为 DeFi 会是区块链的未来(至少就目前来看的确是这样),那么按照 DeFi 本位尤其是清算角度来推导,几年后区块链多链宇宙的终局,无外乎以下几个:

1 多链宇宙并存

理论上来说,如果 L2 进出 L1 速度足够快,且有足够完善的多链宇宙跨链机制,那么黑天鹅级别清算触发时单链 DEX 深度不够的问题可以被来自各个其他链「搬砖」的清算机器人所解决。

因为这在一定程度上共享了多链宇宙的整体流动性,但是只是理论,如此多标准不同的链,想要快速完美的打通,实际操作起来难度实在是太大。

2.1 万链归一到 ETH。

一条链+一个 L2,ETH 进入 L2 Rollup+2.0 分片时代,TPS 和 GAS 不再是问题;Rollup L2 完成吃鸡大业,留下一个最能打的 Rollup KO 其他所有 Rollup,深度也不再是问题。从清算角度来讲,这应该是最「舒服」的一种模式。

2.2 万链归一到 ETH。

一条链+多个 L2,ETH 进入 L2 Rollup+2.0 分片时代,TPS 和 GAS 不再是问题;RollupL2 战国时代,割裂严重,但找到了打通各个 Rollup 的方法,比如状态通道或者聚合器,深度在这种情况下也 OK。清算的话,复杂度肯定是高于 2.1,低于 1。

3 万链归一到 Polkadot。

从清算角度来讲,波卡有两大优势,一是底层设计而言,ETH 清算需要一个 TX 来触发, 而波卡可以做到直接清算。

二是波卡平行链的标准化多链,有通用接口,在多链互通共享深度方面,比第一种多链宇宙并存的异构跨链要实际太多,相对于 2.2 也更有优势,最大的对手应该是 2.1 场景。

当然,这只是从 DeFi 和清算一个角度出发去推演区块链的发展,只是提供一个思路,各位看官千万别当真。

小结

关于清算最后再提一句,Uniswap V3 通过提供粒度控制的 LP (流动性提供商)做市提供了比 Uniswap V2 高 N 倍的资本效率,但如果你反过来想,在大区间范围内,V3 理论上也就意味着比 Uniswap V2 低了 N 倍的深度。

当黑天鹅极端事件发生大规模清算时……越来越有华尔街那种 Feel 了:效率越高,泡沫越大。

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

分类
Uncategorized

矿视界译文:Chia网络是如何运作的?

 

哇呀哇呀 水手 2021-06-03 14:56:33 发布在 矿业挖矿

3535 0

Chia被誉为环保节能的区块链。这个项目的愿景就是让每个人都可以参与挖矿,同时最大限度地减少对环境的破坏。

一个绿色的网络

Chia由BitTorrent的发明者Bram Cohen于2017年创立。它的主要功能是智能交易平台。该网络最大的亮点就在于它采用了一种绿色环保的运营方式,同时它还兼顾了去中心化、效率和安全性。

今年开始,Chia就把绿色理想付诸行动。

3 月,Chia 推出了用于“耕种”(farming)的主网,耕作是 Chia网络上的说法,意思是环保版本的挖矿(mining)。

5 月 3 日,该网络又实现了另一个重要里程碑。在这一天,Chia发布了绿色数字货币 Chia (XCH) 以及编程语言 Chialisp,实现了“智能代币”(smart coin)交易的可能性。

Chia还实现了“自2008年比特币以来的第一个新的中本聪共识算法”。

XCH 和 Chialisp

Chia网络出于对加密货币的信念创造了它的原生代币XCH。这种信念指的是,加密货币应该比现金更易于使用,更难丢失,几乎不可能被窃取。

从实用性的角度上来说,开发绿色数字货币可以奖励 Chia 区块链上的耕种者(farmers)。

Chia使用的是一个增强版的比特币的未花费交易输出系统(unspent transaction output system,UTXO)。作为farmers,前三年每个区块可以获得2个XCH的区块奖励。

你知道吗——什么是UTXO?

未花费交易输出(UTXO),全称Unspent Transaction Output。

每笔交易都有输入和输出,别人付给你的钱是“交易输入”,你付钱给别人就是“交易输出”。当你没支付出去之前是“未花费的交易输出”,一旦你支付出去,就变成了真正的“交易输出”。

UTXO取代了传统的账户余额系统,用以快速计算用户有多少数字资产。为什么中本聪采用UTXO的方式,而没用账户余额系统呢?

假设比特币和传统货币一样,使用账户余额系统,首先需要一个数据库,记录所有人的余额。这里假设全世界使用BTC的用户有10亿用户,每个人每天交易10次,那么平均每秒余额变动将达11万次,如果按照这个频次继续下去,用不了多久相关数据就会撑爆线上的服务器。

而UTXO的方案简单到极致:只确认交易本身,具有极大的优越性:

1. UTXO不能分割,只能被消耗,独立的数据结构大大减少了计算量;

2. UTXO配合地址使用,具备天然的匿名性,保证了账户的安全;

3. 因为地址的存在,UTXO的销毁和产生,都可追溯,很难伪造。

据该网络称,在Chia代币推出之前的几天里,该网络就以超过100,000个全节点,成为全节点数最多,最去中心化的区块链。

该网络使用一种被称为 Chialisp 的“智能代币(smart coin)”语言运行。与之前的其他区块链不同,Chia区块链上的所有东西都包含在智能代币里。

智能代币(smart coin)将智能合约(smart contract)和智能交易(smart transaction)功能合二为一。通过 Chialisp,网络上的应用程序可以用于银行、支付、资产结算和交易。Chialisp 的主要特点包括:

-彩色代币(Colored coins)

-数字身份钱包(Digital identity wallets)

-限价钱包 (Rate limited wallets)

-授权收款人钱包 (Authorized payee wallets)

-多重签名钱包 (Multi-signature wallets)

-可恢复钱包 (Recoverable wallets)

-原子交换 (Atomic swaps)

环境危在旦夕

加密世界从不休息,每一天都在高速进化。而这带来的很大的一个问题是,能源使用效率和专业挖矿设备相关的环境影响。

比特币当前的能源消耗为 95.45 TWh,每年的二氧化碳排放量为 45.34 公吨 (mt)。这些数字相当于香港等全球主要城市的能耗。

两周前,特斯拉已停止使用比特币付款。CEO马斯克表示做出这一决定的主要考虑的是,比特币对环境的影响,也就是它的高能耗。

马斯克还指出,如果以后比特币使用可再生清洁能源,特斯拉将重新接受比特币,公司将转向其他能源消耗小于比特币交易能耗的1% 的加密货币。

工作量证明模型(POW)已经被证明不利于保护环境。一些项目开始尝试使用权益证明模型 (POS) 来试图解决这个问题,例如 Ripple和Cardano。而这正是Chia诞生的背景。

时间和空间证明

Chia可以通过其新的共识协议为加密世界内的新一波发展浪潮奠定基础。该网络的“时空证明”是同类证明中的第一个。它提高了farming (mining)行业中的能源效率,解决了传统 POW 协议中的中心化问题。

时空证明,通过将存储空间和存储时间的结合以及“可验证的延迟函数”(verifiable delay function, VDF),以实现其对安全性和效率的承诺。

参与链上farming的人首先需要在硬盘上创建“图 (plots)”,然后在接下来几年将利用硬盘空间来参与该共识机制,验证Chia 区块链上的新区块。”

这种方式解决了传统挖矿产生的巨大电费。同时,farmers也不需要使用专门的矿机来验证交易。

Chia的环保做法对加密行业来说是全新的。但他们的协议未来能否以他们想要的方式实施,同时持续吸引farmers和开发者,这还有待观察。

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