您正在查看: Surou 发布的文章

Swarm BZZ常见技术问题

1. swarm官方网站是什么

https://swarm.ethereum.org/

2. 哪里能联系Swarm开发人员

https://discord.gg/GU22h2utj6

3. 目前测试网运行一个节点需要多少gBZZ

需要1个gBZZ和0.1个左右的gETH,对于0.6.x版本默认配置已经修改为了1个gBZZ,如果0.5.3版本,需要改下配置添加或修改swap-initial-deposit: "10000000000000000"

4. 大家说的买卖水是什么意思

因为启动Swarm项目需要质押gBZZ测试币,但由于免费领取测试币的接口都被专门薅羊毛的搞光了,被薅出的gBZZ就被成为“水”

5. 如何免费领取gETH和gBZZ

目前最好的就是通过 https://faucet.goerli.mudit.blog/ 发twitter领取完,再到https://app.uniswap.org/#/swap?use=V2 去兑换gBZZ,兑换步骤参考https://www.bcskill.com/index.php/archives/1105.html

还可以去
或者https://discord.gg/GU22h2utj6 中的#faucet频道去领取
发送 /faucet sprinkle 你的地址

来获取,一旦你成功启动3个节点后,你可以在 #faucet 频道继续申请。

6. 使用cashout.sh兑现支票时交易手续费过低怎么办

你可以自己修改下 cashout.sh 脚本中的 cashout() 方法,自己增加Gas-Price参数 “ local response=$(curl -s -H "Gas-Price: 150000000000" -X ...” 加大gas price 加快交易被打包

7. deploying new chequebook in transaction 等待很久

等待交易被打包呢,如果是 0.6以上版本可以加大gas price ,配置中增加 swap-deployment-gas-price,具体的值可以使用MetaMask发起一个转账,看一下建议的gas price是多少,自己适当加2-3倍即可,比如此时
swap-deployment-gas-price: 167500000004

如果是0.5.3版本,那就需要修改下源代码了
https://github.com/ethersphere/bee/blob/acbd0e2ebb4e23566320fdf5d0a40e672d2a8f1a/pkg/settlement/swap/transaction/transaction.go#L180 中的 prepareTransaction方法中,把 gasPrice放大两倍
gasPrice.Mul(gasPrice, big.NewInt(2)) //放大2倍

8. init chain: dial eth client: dial tcp: lookup goerli.infura.io: no such host

简单说infura.io域名被墙了,自己可以找下其他公开的RPC接口,或者自己同步个以太坊节点
https://www.bcskill.com/index.php/archives/1094.html

9. 去哪里下载Swarm 最新版本的节点程序

Swarm项目的节点程序叫做bee
官方目前唯一下载地址:https://github.com/ethersphere/bee/releases
到这个页面去下载对应的平台程序即可,强烈建议不要去使用其他三方提供的链程序,避免存在恶意代码。

10.bee节点程序最适合的系统是什么

建议使用linux系统,比如Ubuntu ,或者centos,因为社区大部分都在用linux系统,一些脚本也是linux 更多一些,也方便操作,并且Linux系统相对Windows相对长时间运行来说,性能更优。

11.官方推荐运行配置是什么

官方已经准备在整理了,https://github.com/ethersphere/bee/issues/1927

12.如何查看当前节点的连接数

curl -s http://localhost:1635/peers | jq '.peers | length'

13.如何将0.5.3版本升级到0.6.x

官方文档:https://docs.ethswarm.org/docs/working-with-bee/upgrading-bee/
简单说如果

curl -s localhost:1633/pin/chunks | jq ".chunks | length"

返回0的话,直接升级bee程序,重新运行就好了
如果不为0,那就按文档进行手动处理

并且记得配置文件中添加
full-node: true,改成full 节点才能出票,默认为false 轻节点

14.0.6.x 版本以上怎么升级

直接升级bee程序即可

15.查看已出票

curl localhost:1635/settlements | jq

16.如何兑换支票

直接使用社区提供的cashout.sh 脚本即可,对于测试网建议修改下脚本里的参数MIN_AMOUNT=10000,这样不必累计到一定额即可兑现
对于Linux,0.5.3版本直接下面命令执行,获取cashout.sh

wget -O cashout.sh https://gist.githubusercontent.com/ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975/raw/b40510f1172b96c21d6d20558ca1e70d26d625c4/cashout.sh
chmod +x cashout.sh
./cashout.sh

对于0.6.x版本,使用已下版本
https://gist.github.com/ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975

17.对于Windows如何执行cashout.sh

可以使用git工具中bash,不过还是建议安装WSL或者安装个linux虚拟机,这样一劳永逸。

18.如何查看节点中的地址

curl -s localhost:1635/addresses | jq .ethereum

19.如何查看节点中的余额

curl localhost:1635/chequebook/balance | jq

20.如何判断一个节点是否正常运行

curl http://localhost:1633

返回Ethereum Swarm Bee
并且检查已连接的节点数大于0

curl -s http://localhost:1635/peers | jq '.peers | length'

21.对于Windows没有curl工具怎么办

可以直接去下载
https://curl.se/windows/dl-7.77.0/curl-7.77.0-win64-mingw.zip

22.对于节点地址和支票合约地址是一个么?

不是一个地址,可以简单理解成节点地址是你的钱包地址,支票合约地址是节点地址部署的一个合约,中间过程是SimpleSwapFactory合约帮忙部署的

23.对于目前测试网,如何查看交易状态

去区块浏览器直接查找 https://goerli.etherscan.io

24.目前节点出票率主要影响因素是什么

对于Swarm项目,最核心的就是带宽和网络的稳定性,对于网络稳定由于GFW原因,对于目前测试阶段,还是国外出票率高些

25.如何判断交易是兑现交易,并且成功了

去区块浏览器上查看自己的支票合约地址,显示的交易MethodCash Cheque Beneficiary就是对票交易,并且gBZZ转账金额大于0,最后交易被成功执行,即为有效兑现交易

26.目前什么版本的bee可以正常出票

截至目前发稿,0.5.3的可以通过手动指定bootnote启动新节点,之前已经运行的还可以正常运行出票。对于0.6.x所有版本暂未有正常出票的

27.如何进行多节点部署

官方禁止同一个地址运行多个节点
https://docs.ethswarm.org/docs/FAQ/#can-i-use-one-ethereum-addresswallet-for-many-nodes
只能一个地址运行一个节点

28.Swarm 中文白皮书

https://chinapeace.github.io/pdf/latest.bookofswarm.eth.ZH_CN.pdf

29. Swarm bee节点全球分布

https://beenodes.live/

30. 官方twitter地址

https://twitter.com/ethswarm

31. 官方博客地址

https://medium.com/ethereum-swarm

32. 官方技术文档

https://docs.ethswarm.org/docs/

33. 如何查看goerli测试网的区块高度和手续费价格

https://stats.goerli.net/
api获取:https://goerli.etherscan.io/apis#proxy

34.Bee使用哪个p2p端口,我应该在路由器中打开哪个端口?

Bee 的默认 p2p 端口为 1634,请使用您的路由器转发此端口,并根据需要允许流量通过防火墙。Bee 也支持 UPNP,但建议您不要使用此协议,因为它缺乏安全性。有关更多详细信息,请参阅文档中的连接部分。https://docs.ethswarm.org/docs/installation/connectivity

35.我如何知道我是否已连接到其他对等点

您可以使用它的 HTTP api 与您的 Bee 通信。

curl http://localhost:1635/peers | jq

在您的命令行中键入以查看您的同行列表。

36.Failed to connect to local host port 1635: Connection refused

您的节点未侦听端口 1635,或者未启用 debug-api,或者未在 localhost 上执行。确保您的 bee.yaml 文件具有debug-api-enable: true

37.could not connect to peer

“由于各种原因,可能会连接到对等点。” 最常见的一种情况是,您在地址簿中拥有来自前一个会话的对等方的标识符。再次尝试连接到此节点时,对等方可能不再在线。

38.context deadline exceeded

“超出上下文截止日期”是一个非严重警告。这意味着节点花费了意外的时间来响应来自您节点的请求。您的节点将通过另一个节点自动重试。

39.如何设置区块链端点swap-endpoint

  • 如果您使用“bee start”
    • 您可以在 --swap-endpoint 或 BEE_SWAP_ENDPOINT 下的 bee 配置中设置它
    • 打开 ~/.bee.yaml
    • 放 swap-endpoint: wss://goerli.infura.io/ws/v3/your-api-key
  • 如果您使用 bee.service
    • 您可以在 --swap-endpoint 或 BEE_SWAP_ENDPOINT 下的 bee 配置中设置它
    • 打开/etc/bee/bee.yaml
    • 然后取消注释swap-endpoint配置
    • 并将其设置为 wss://goerli.infura.io/ws/v3/your-api-key
    • 在那之后 sudo systemctl restart bee

40.如何从安装了 bee-clef 的节点导出私钥

如果您将 Bee 与 Bee-Clef 一起运行,您可以在命令行中输入bee-clef-keys,这会将 .JSON 文件存储到您的主文件夹中,并将密码复制到您的剪贴板中。

41.如何查看我有多少张已兑现的支票

您可以在 etherscan 查看您的支票簿合同。
通过以下方式获取您的支票簿合同地址:

curl http://localhost:1635/chequebook/address

42.我对比过我的以太坊地址和我的支票簿地址之间的交易,数量不同,这很奇怪

当您的同行现金支票由您签发时,您的支票簿将显示 OUT gBZZ 交易,但您无需为这些支付任何 gas,因此它们不会出现在您的以太坊地址交易列表中

43. 如何从节点导出私钥(没有 bee-clef)

下载最新的exportSwarmKey工具
https://github.com/ethersphere/exportSwarmKey/releases

exportSwarmKey xx/节点data目录/keys/ 密码

具体的data目录查看bee.yaml配置文件data-dir参数,密码查看password-file对应文件的内容
执行完,返回的内容中,找到swarm.key中的私钥即可在其他钱包中导入

44. waiting for transaction xxx to be mined: not found

等待交易被打包,建议避免出现此情况,先按文章中的问题7进行增加手续费价格

45. bee的重启命令是什么

如果您使用 bee.service

  • 开始: sudo systemctl start bee.service
  • 停止: sudo systemctl stop bee.service
  • 状态: sudo systemctl status bee.service

如果您使用bee start

  • 开始: bee start
  • 停止:ctrl + ccmd + c或关闭终端以停止进程

46.我可以将多个节点连接到 infura 端点吗

是的,但他们的免费计划每天限制 10 万个请求。

47.当我运行 http://localhost:1635/chequebook/balance 时,我得到“totalBalance”和“availableBalance”有什么区别

totalBalance是区块链上的余额,availableBalance是该余额减去您发给同行的未兑现(非兑现)支票。这些后面的检查不会出现在区块链上。这就像银行认为您的余额与您的支票簿所知道的实际上可用的余额,因为您写的支票仍然“在邮件中”并且尚未兑现。

48.什么决定了对等点的数量以及如何影响它们的数量?为什么有时有 300多个同行,有时有30个

连接对等点的数量由您的节点决定,因为它试图保持分布式 Kademlia 的良好连接。随着节点在网络中来来去去,您的对等点数会上下波动。如果您查看 bee 的“成功连接”输出日志,则在这些消息的末尾应该混合使用 (inbound) 和 (outbound)。如果您只获得(出站),那么您需要通过防火墙打开 p2p 端口和/或由路由器转发。查看文档https://docs.ethswarm.org/docs/installation/connectivity 中的连接部分。

49.我可以为多个节点使用一个以太坊地址/钱包吗

不,这违反了 Swarm 协议的要求。Swarm 协议依赖于Swarm Address,也称为peer address. 该地址是节点以太坊地址的散列,因此它是确定性的。由于所有节点都必须有一个唯一的地址,如果你使用同一个钱包,就会违反唯一性约束并导致节点故障。

因此,规则是,每个节点必须具有:

  • 1 以太坊地址
  • 1 支票簿
  • API / p2p / Debug API 的 3 个独特端口

50. waiting to sync with the Ethereum backend

更换稳定的swap-endpoint

持续更新

参考

https://docs.ethswarm.org/docs/FAQ
https://hackmd.io/tfKVeHaIQGewlGTC4ooESg#Swarm-FAQ

gETH 兑换 gBZZ

目前https://bzz.ethswarm.org/ 挂了,现在可以使用uniswap来兑换
https://app.uniswap.org/#/swap?use=V2

在选择通行证那里输入gBZZ合约地址
0x2ac3c1d3e24b45c6c310534bc2dd84b5ed576335



添加gBZZ

然后兑换对应数量的gBZZ即可

Swarm Bee 节点升级

https://docs.ethswarm.org/docs/working-with-bee/upgrading-bee/
https://gist.github.com/ralph-pichler/3b5ccd7a5c5cd0500e6428752b37e975
https://github.com/leepood/bee-upgrade-tools/blob/main/deploy.sh

目前v0.6.1还存在一个BUG
https://github.com/ethersphere/bee/issues/1823

2021-5-23 03:00 官方通知
https://discord.com/channels/799027393297514537/810905662375854123/845743602553454672

亲爱的大家,

V0.6.1被确定为不稳定。 我们建议尚未从v0.5.3更新的所有人继续操作该版本,直到另行通知。

对于已经更新到v0.6.1的人们,您可以继续运行节点并熟悉新暴露的功能,或者暂时停止运行节点,直到v0.6.2退出。

感谢大家的耐心和理解。 我们试图尽快解决这种情况。

2021-5-23 09:40
等待社区放出0.6.2版本修复,目前无可用版本

对于想继续使用0.5.3的,如果卡在

time="2021-05-26T15:03:01+08:00" level=debug msg="discover fail /dnsaddr/bootnode.ethswarm.org: discover /dnsaddr/swarm-3.bootnode.ethswarm.org: discover /dnsaddr/bee-10.bootnode.ethswarm.org: discover /ip4/3.235.55.200/tcp/31400/p2p/16Uiu2HAmGwAEGJSb3XBNDLwGPbbcLL8LceDhMZeki8aciphcfdXr: connect new stream: incompatible stream: protocol not supported"
time="2021-05-26T15:03:01+08:00" level=warning msg="discover to bootnode /dnsaddr/bootnode.ethswarm.org"

可以尝试执行

curl -X POST localhost:1635/connect/ip4/172.105.208.202/tcp/1634/p2p/16Uiu2HAmVQdBWSS11s3m3PtGVi92Ts2m7UvxnJmVLJQVdfaxu63z
curl -X POST localhost:1635/connect/ip4/172.104.83.228/tcp/1634/p2p/16Uiu2HAmGTv2AqBCEmZy8PGpNXj6a2TjTzjvmht1hha1Sg88ALqk
curl -X POST localhost:1635/connect/ip4/107.182.177.94/tcp/1640/p2p/16Uiu2HAkvu5g73Q5MpFooLPNHvbyaocHH4bZdLCnVHuZkK4wFc5Z
curl -X POST localhost:1635/connect/ip4/51.79.68.121/tcp/1634/p2p/16Uiu2HAm5KXkSSg1uk3KdvJYWNGuVwMA1ASurcunELrhFV9sadtV
curl -X POST localhost:1635/connect/ip4/23.224.227.34/tcp/50144/p2p/16Uiu2HAmLEjmegMaV8D8JLVJWGZXFq4MfPrc37TVfhDMQPxaUvRY
curl -X POST localhost:1635/connect/ip4/172.96.203.143/tcp/1640/p2p/16Uiu2HAmQXEfeDoBm4eTFSYJcQ8BBCJzccxSvjAyY3XaiHtYrHEp
curl -X POST localhost:1635/connect/ip4/172.105.238.165/tcp/1634/p2p/16Uiu2HAmSU1qU83tJZAh1z6ZhGshQ9gfeU558iNGZZrpkDdi47rB
curl -X POST localhost:1635/connect/ip4/218.93.127.19/tcp/1634/p2p/16Uiu2HAm83rDQMs9sXMyuVVZwtTZiYCexkaM6zfRVZqs2RxJKnzx
curl -X POST localhost:1635/connect/ip4/66.181.45.134/tcp/50254/p2p/16Uiu2HAkzyGEtXiqx77A4JJ1hA5ojsCfRD5XPM2jWNsTiiX6wvAi
curl -X POST localhost:1635/connect/ip4/154.215.142.136/tcp/1634/p2p/16Uiu2HAmUFKWHjk9bY7HRx2eeUoMPUPCoADp21UBhgpsF8dWQ6YE
curl -X POST localhost:1635/connect/ip4/66.181.34.124/tcp/50214/p2p/16Uiu2HAmMwt4FYr1uoZFWZRXXUJHqS5hozxW2GVWqegKGvmYW4vK
curl -X POST localhost:1635/connect/ip4/66.181.34.210/tcp/50214/p2p/16Uiu2HAmUdvc8Xw8JBkvKQXCrPTSBx2sR8tiqUd9aqZKVMJsgmnr 
curl -X POST localhost:1635/connect/ip4/97.64.22.192/tcp/1652/p2p/16Uiu2HAmE1tHqu1VMVuaDPnC1z7zB3Xgs8ho6EaidtztteNajYb6 
curl -X POST localhost:1635/connect/ip4/149.28.71.169/tcp/1634/p2p/16Uiu2HAmAsbNuMgdcGQhmp6bDLiKEnwAq5h3HJrNLzpUXjJ7MBbt
curl -X POST localhost:1635/connect/ip4/103.96.74.61/tcp/1634/p2p/16Uiu2HAmPuiJykpgS51XWyyB7NMHg1PVyz9edPernMdaSJ7nVe5d
curl -X POST localhost:1635/connect/ip4/47.242.203.75/tcp/10015/p2p/16Uiu2HAmKjSZQHiUYzG9Z2nR6mFV6nSpskK8UPcfcGF1K88Hy5YG

Swarm一个以太坊地址部署多个节点

先说结果:目前不能实现

在分析下原因
我们说关键的几个点

  1. 由于bee每个节点本地累计nonce,多节点并发可能拿到同样的nonce,如果同时操作同样的交易,则导致交易被覆盖
    主要体现在兑换获得相同支票,
    这个到容易解决
    bee\pkg\settlement\swap\transaction\transaction.go
  2. 同样的以太坊地址导致计算的
    swarm network address
    swarm public key
    从而 p2p address 相同
    导致kademlia被拒
    https://github.com/ethersphere/bee/issues/1789

https://github.com/ethersphere/bee/issues/1789

还想到用swap-factory-address各个节点配置统一个合约地址,来绕过

自欺好说
https://github.com/ethersphere/bee/blob/e688199e255190c4628d8122407bab4302d2cdd6/pkg/settlement/swap/chequebook/init.go#L108

// verify that the supplied factory is valid
err = chequebookFactory.VerifyBytecode(ctx)
if err != nil {
    return nil, err
}

但是对方检查过不去
https://github.com/ethersphere/bee/blob/e688199e255190c4628d8122407bab4302d2cdd6/pkg/node/node.go#L257

if err = chequebookFactory.VerifyBytecode(p2pCtx); err != nil {
    return nil, fmt.Errorf("factory fail: %w", err)
}

这官方最近也明确多开违规了
https://docs.ethswarm.org/docs/FAQ/#can-i-use-one-ethereum-addresswallet-for-many-nodes

等忙完稍后再继续跟吧