ETH2.0-Lido业务与质押了解
简述ETH2.0搞的风风火火,我没有32个ETH,不然我也去质押,多少赚点。我很好奇ETH怎么实现质押的,然后稍微看了一下。
Lido 是一个以太坊 2.0 质押服务平台,用户可质押任意数量。Lido 是一个跨多个区块链的流动性质押协议,这个是重点,现在多链生态才是王道,自己玩只会越玩越窄。
ETH的质押是 1:1 的获得质押代币 stETH,获得stETH后,可以参与 DeFi 市场其他服务。
Lido 的 stTokens 在整个以太坊生态系统中被广泛采用:
最重要的流动性场所包括Curve 上的 stETH/ETH 流动性池和Balancer v2 上的 wstETH/ETH MetaStable 池。
stETH在以太坊主网上的AAVE v2 市场上被列为抵押资产。
wstETH在 Maker 上被列为抵押资产。
steCRV(the Curve stETH/ETH LP 代币)被列为 Maker 上的抵押资产。
在 Lido 的 stTokens 之上构建了多种流动性策略,包括yearn、Harvest Finance和Babylon Finance。
Curve 是一个 ...
tron-产块-SR产块机制
SR 基于DPOS共识,所有节点按照时间顺序轮流产块。
DPOS 共识简述DPOS 共识即为,Delegated Proof of Stake 股份授权证明,在 POS 机制上进行改进。相较于DPOS更为中心化,大白话主要就是两个角色:
持股人(持币用户)投票选举出委托人(Delegates)
被委托人进行出块,将奖励分给投票人
在DPOS机制下,算法要求系统做三件事:
随机指定生产者出场顺序;
必须按顺序产块,不按顺序生产的区块无效;
每过一个周期洗牌一次,打乱原有顺序;
受托人的职责主要有:
保证节点的正常运行;
收集网络里的交易;
节点验证交易,把交易打包到区块;
节点广播区块,其他节点验证后把区块添加到自己的数据库;
带领并促进区块链项目的发展;
大至概念就是这些,下面对SR产块原理进行分析。
产块机制注意,TRON对DPOS的产块机制是做了调整的,不完全是按照这个的机制来实现。这个嘛。。。懂的都懂。
产块大流程
产块节点通过定时任务制每隔最多不超过3秒执行一次,判断是否轮到自己产块
如果是自己产块,回滚当前节点交易状态,并将交易池中的交易打包
打包成功后广播 ...
rocksdb arm 架构下编译全过程记录
背景最近公司项目需要适配arm64架构机器,特意整了两台arm64架构的CentOS7/8的机器来构建。x86、x64架构下的应用在arm64下面需要解决各种环境和依赖问题。
环境
Linux internal 4.18.0-147.8.1.el7.aarch64 #1 SMP Wed Apr 15 18:13:44 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
CentOS Linux release 7.8.2003 (AltArch)
编译在 Linux - CentOS / RHEL 环境下编译,可以选择安装官方完整的依赖或者只安装自己需要的部分。有什么区别?
环境准备:
gcc升级到至少7的版本,以获得C++17的支持
获取 RocksDB
1get clone https://github.com/facebook/rocksdb.git
安装插件这些插件可以选择性安装,你需要哪个,在使用时自行安装,也可以一次性装好。
Install gflags:
1234git clone https://github.com/gfl ...
docker arm架构下安装docker
arm 架构下安装做arm下的应用迁移,包括应用在docker环境下的表现。所以在 centos arm环境安装docker。
更新源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
安装 docker
yum install -y docker-ce docker-ce-cli containerd.io
开启docker服务
systemctl enable dockersystemctl start docker
验证
docker ps
如果报错,说明当前用户没有权限,给当前用户授权
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
几种修改方式,思路是一样的,就是给权限:
1.加 sudo 执行2.把当前用户修改用户组3.直接改文件归属
sudo chown $USER /va ...
linux-CentOS8 arm64架构 使用Centos8打包报错 No URLs in mirrorlis
起因最近在为应用打包 arm64架构应用环境的docker包。基于:
Linux aarch64 aarch64 aarch64 GNU/Linux
基础镜象使用 CentOS8,过包过程中报错。
报错虽说 CentOS8 已经不维护了,但是很多项目还是基于CentoOS8构建。使用阿里云基于CentOS8构建 CentOS8 镜像构建过程中报错:
#5 5.239 CentOS Linux 8 - AppStream 8.9 B/s | 38 B 00:04#5 5.241 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
原因在 Dockerfile 中使用到了yum 进行安装。阿里云官方给出解释:
CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。建议您切换到Anolis或Ali ...
Github Action 自动构建并推送 DockerHub
写在前面Github Action 这个东西,是小成本和自动化持续集成的福音,如果想要小成本的使用持续集成,省去自己搭建服务器做自动构建,Git Action 就是个好东西。没有这个的时候,你可以自己加 hook 触发,服务可以自己搭,也可以用第三方的。Github Action 最好的优执我个人觉得是在白嫖,什么东西不要钱的都是最好的,除了玩游戏。
需求我的需求很简单,当代码正式发版后,发布tag后,自动触发通过我的指定的Dockerfile构建镜像后,推送我们指定的 DockerHub。Github Action 提供的操作,可以理解为你在 jenkins 的服务器上写的 Pipline 脚本,一个作用,说到这发现Github Action又把 jenkins的饭碗抢了。
使用 Github Action照例,先告诉你怎么用,能搜到我博客的都是来解决问题的,如果还还有耐心,在解决完问题后,接着往下看。
我使用是官方推荐配置,看了一下,没有什么可以改的地方。你点开 Action 一看,它能搞的实在太多了,基本上能满足你的所有日常构建。
找到publish Docker Contai ...
go import导包关键字
import 导包有相对路径 和 绝对路径,推荐使用绝对路径。GoLand 中导包如果不用,会报错。
格式导入单个路径
1import "./model" //不建议这种方式import
导入多个路径
1234import ( "./model" "github.com/forfreeday/go-learning")
路径相对路径:
1import "./model" //不建议这种方式import
绝对路径:
1import "shorturl/model" //加载GOPATH/src/shorturl/model模块
点操作这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,
1234567import( . "fmt" )func main() { fmt.Println("hello world") //可以省略的写成 Println("hello wor ...
hexo-自动发布脚本
这个脚本有什么用先说说我的场景,最近写博客勤快了,偶尔会在公司写文档。发现在公司和家里两台电脑是写东西的时候总是会发现忘记提交写的markdown文档,这样如果在公司写了一半没有提交,在家里就写不了了,所以想了一个办法,写一个脚本,每次自动提交文档,然后自动发布。我是在 github 上创建了一个私有仓库,将未生成的原始文档添加到仓库中,这样可以方便在不同设备之间进行同步,哪怕在网吧当中,想写文章了,git clone 一下就可以开始写文章。
解决问题
自动提交markdown到github
自动发布到 github.io
自动替换 source/ 文件到 public/
在 hexo/ 目录下创建脚本文件
touch deploy.sh
复制以下内容:
1234567891011121314151617181920212223#!/bin/bash# commit 内容就是日期DATA=`date +%Y-%m-%d_%H:%M:%S`# 如果没有修改,就不需要提交到 github。if [ -n "$(git status -s)" ];then g ...
java 服务大量外部连接导至异常
相信很多小伙伴都碰到过一个问题,服务运行过程中,产生大量的未关闭的TCP链接,导至服务不可用直至服务异常。该如何定位、排查这些未关闭的链接?之前碰到过这个问题,解决了,今天有小伙伴又聊到这个问题,就将这个问题复现出来,如果有人看到这个问题,可以帮助解决这个问题。
复现通过 jmeter 复制问题,由于问题已经被解决,但是可以通过 jmeter 100%复现该问题。
复现流程:
通过 jmeter 发起 http 请求,并且不释放请求。
停止 jmeter 后查看状态
java.net.NoRouteToHostException: Can't assign requested address (Address not available) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
报的错是Can't assign requeste ...
tron-节点-轻节点搭建
轻节点轻节点,只包含部分数据,节点轻量化,所以叫轻节点,BTC、ETH都支持轻节点功能,在tron网络中轻节点数据,只保留一天的数据,从这一天的数据为起点,同步后续数据。开发一般使用轻节点来进行开发和调试是比较方便的,全量数据需要很大的磁盘空间。
快照快照有全量数据快照和轻节点数据快照。全量数据快照,就是全部的数据,比较大。轻节点数据快照是可以指定某一天的数据快照。
看下单天的数据量很小,只有10G,全量数据就比较大,有442G:
搭建搭建看之前的搭建方式: FullNode搭建,唯一的区别在于,FullNode并没有指定数据快照,从零开同步,轻节点或全量节点,是指定的数据快照,这样就不需从零开始同步。
项目结构:
123FullNode.jarconfig.confoutput-directory
启动:
1java -jar FullNode.jar -c config.conf -d output-directory
优化参数自行指定,这里只说怎么启动轻节点。还有一点,轻节点默认不启用查询功能,需要在config.conf中修改参数
1openHistoryQueryWh ...