ethereum--Account账户模型
以太坊帐户一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。 帐户可以由用户控制,也可以作为智能合约部署。
帐户类型以太坊有两种帐户类型:
外部账户 (External Owned Accout, EOA): 私钥的所有者控制
接收、持有和发送 ETH 和 token
合约账户 (Contract Account, CA): 一种由代码控制,部署在网络上的智能合约。
与已部署的智能合约进行交互
外部和合约账户使用相同的数据结构,只是使用的字段不同。
12345678// StateAccount is the Ethereum consensus representation of accounts.// These objects are stored in the main account trie.type StateAccount struct { Nonce uint64 Balance *big.Int Root common.Hash // merkle root of the storage trie ...
synology 自动更新IP同步阿里云脚本
场景需要使用域名指向自己的NAS的场景,达到域名动态的指定自己的IP的目的,但是家庭宽带IP不固定,每次重启路由IP会变,所以写一个脚本来自动查询IP,并更新到阿里云的域名上。
脚本NAS 中配置定时任务是可以执行脚本的,本身也是Linux,如查开ssh的话,直接就能上去操作,不过不安全就是,全身如果IP对外暴露,就会有被人恶意连接上的危险。很多文章放脚本需要开ssh之后,通过FTP工具上传脚本,不要这么做,轻易不要开启ssh登陆,除非你已经很熟悉了。
shell 脚本建一个目录,创建一个文件aliyun.sh,然后右键--属性查看文件路径:
脚本内容如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 ...
tron ECC使用及项目中的应用
简述ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)是一种公开密钥算法。基于椭圆曲线数学的公开密钥加密算法,其本质是利用离散对数问题实现加密。ECC的主要优势,是在使用更小的密钥的同时,提供更快的性能和更高等级的安全。网上的理论大都讲的非常透彻,我也是看了很多,但是实际能力有限,对数论层面的只停留在浅薄的理解上,不敢乱讲。但是可以简单的说明其原理。
还有一点,加密算法包括RSA和ECC并不是不可以被破解,只是以当下现代计算机的计算性能算起来比较费劲,理论上破解ECC需要最少250万年,其破解的代价很高,以此来达到不可破解目的。用量子计算?不说现在有量子技术可不可么,假设量子计算可是可行的,那为什么不升级到量子加密?
ECC: 基于椭圆曲线和离散对数其原理是数论理论中的单向运算函数,这种函数有一个特点:正方向计算容易,反方向计算却十分困难。啥意思?就是计算:
1234 * 4567 = ?
计算这个简单,结果是:5635678。那么,返过来计算:
5635678 = x * y
这样就不好计算了,而且结果有很多种有可能是:
5635678 ...
synology 联通光猫配置nas内网穿透
前言使用NAS,在外网数据访问上,不同的数据,肯定有不同的考量,有的数据直接使用自带的QuickConnect访问就可以了,有的敏感数据,不希望使用中间节点转发,则会考虑使用内网穿透。
之前一直使用i234.me进行转发,没有申请公网IP。最近突然发现synology官方的DDNS已经失效,估计是被墙,ping不通了。
也就是说,只能使用墙内允许的转发,还是挺让人无语的。
配置花生壳使用这些国内的转发的话,数据都会走节点转发,安全是个问题。
登陆后-->管理平台-->花生壳:配置如下,域名选分配的免费域名,内网IP就是NAS所在内网路由器,分配的IP。假设是testtest.zicp.vip
内网
配置好之后,可以使用阿里云自己的域名通过CNAME转发到testtest.zicp.vip上,这样就完成了一个转发。访问的话,直接使用testtest.zicp.vip进行访问即可。
总结这种方式实现了内网穿透,但是还是需要中心转发节点进行转发,最好的方式还是申请固定IP。还有一个思路,就是自己买一个服务器,自己搭数据转发节点,这个问题就是成本有点高,一台服务器一年上千块钱。 ...
tron checkpoint数据还原点
前言TRON 的数据还原点checkpoint指的是数据在某一刻建立的一个快照的备份,给内存快照(snapshot)生成一个临时持久化存储。
作用保存数据在内存中的状态到碰盘,用于服务异常数据异常恢复。checkpoint 是将某一时刻在内存在还没有写入到磁盘中的数据,临时写入到磁盘当中,当处理成功后删除本次的checkpoint,待下一次刷盘时,重新创建checkpoint,重复这个过程。
在此之前需要对TRON的内存快照机制有一定的了解。
刷盘机制TRON中的刷盘和很多别的应用的刷盘一样,都是将内存中的数据刷入到磁盘当中。也就是说:TRON对数据的写入是先内存,后磁盘。如果数据在内存当中就会存在一个问题,如果服务进程挂了,那内存中的数据就会丢失。举个例子:比如:
A 给 B 转10块钱,这笔交易需要等待刷盘时机触发,才会写入到内存当中此时,服务挂了,这个数据并没写入到磁盘中,那么这笔交易就丢失了。
为了解决这一问题的,使用 checkpoint 机制。
先看一下内存中的数据结构图,每一次对区块操作,都会创建一个对应区块的checkpoint。SnapshotRoot是对leve ...
ethereum原理--关于keccak256
关于 keccak256看以太坊代码,发现很多地方使用的加密函数是:keccak256,了解了一下做个输出。
Keccak算法(读作为“ket-chak”)是Guido Bertoni, Joan Daemen, Michael Peters, and Giles Van Assche的工作。 SHA-3的候选人在2008年10月提交。Keccak采用了创新的的“海绵引擎”散列消息文本。它是快速的,在英特尔酷睿2处理器下的平均速度为12.5周期每字节。它设计简单,方便硬件实现。Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。至目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。尽管如此,Keccak的创建者已经启动Crunchy加密比赛,挑起人们发现和报告成功且可核查的攻击Keccak的兴趣。
Keccak-256被设计为于2007年举行的SHA-3密码哈希函数竞赛的候选者。Keccak是获胜的算法,在2015年被标准化为 FIPS(联邦信息处理标准)。不过NIST接受原始的Keccak256设计后,更改了Padding的格式, ...
以太坊 chainlist
简述Chainlist 是 EVM 网络的列表。 用户可以使用这些信息将他们的钱包和 Web3 中间件提供商连接到适当的Chain ID 和网络 ID,以连接到正确的链。因为每条ETH的链都有自己的ID,不能重复,相当于是一个ID。
查询chainIDchainId不能重,在配置自己的chainID时,先查一下。可以看到ETH自己的chainID是1,BNB是56,polygon 是137,往下拉一堆链。
https://chainlist.org/
https://chainlist.wtf/
官方源码https://github.com/ethereum-lists/chains
tron 编码 二进制、base58check、Hex
编码在TRON中使用到的其中二种编码:
base58check
hex
byte
为什么说这三种编码,主要是这三种比较常用。首先用到最多的就是地方就是基于byte[]衍生的各种编码场景如:
私钥
protobuf
leveldb存储
都是先基于byte数据来的,其它区块链当中也有大量使用byte。
byte使用场景:
数据存储
网络传输
这个比较在常用,在tron链中,越是底层的数据存储越是需要二进制,如私钥、数据存储等,就是byte[]这种格式。使用protobuf序列化也是byte[],leveldb 的存储也是基于byte[]。可以理解为,最重要和核心的数据形式。但是byte也有一个问题,就是表现形式上,太长了,不利于人类的阅读体验。数据之间需要进行转换才能使用,首先,数据存储到leveldb中,是只能存储二进制数据,也就是在源头上,数据就必须是二进制形式存在的,如果要使用转换数据是必然的行为。当然你说我就要二进制,就不嫌麻烦,整套系统都用二进制操作,也不是不可以,效率是少了一步转换肯定是可以,但是内存上有没有那么大的空间。二是我调试时,看二进制没问题,完全不在话下, ...
ethereum原理-gas说明
前言简单的说就是手续费的一种变体,本质还是转账费用,只能在设计上,功能更复杂,用处更多。即然是手续费,为什么不干脆一次性收取或者设定一个转账比例,不是更简单?这个后面说。
Gas 说明以太坊自称要成为世界计算机,但是这个计算机是烧Gas而不是用电,也不知是汽化天燃气还是液化天燃气。也有可能是以太坊想说,发电要用天燃气,所以Gas代表了消耗。
参数
作用
Gas(也称:GasUsed)
EVM中的每个操作都指定了要消耗的gas量
Gas Price
每个操作的单价,就是说这笔交易,不只一处需要使用到Gas
Gas Limit
本次交易的Gas限额
所以一笔交易的手续费就是:
Transaction Fee = Gas * GasPrice
就是这么简单粗暴。
作用:资源限制手段,以及网络矿工奖励手段。
作为以太坊价格(具有波动性)和矿工对其工作的奖励之间的抽象层。
另一种是抵御拒绝服务攻击。
为了防止网络中的意外或恶意无限循环或其他计算浪费,每个交易的发起者需要设置他们愿意花费在gas上的金额的限制。因此,gas系统阻止攻击者发送垃圾邮件交易,因为他们必须 ...
algorithm 参与度算法
前言参与度算法是用在计算多个节点之间的参与情况的算法,也就是说在多个已经确认的节点个数之间的一种算法。
说人话就是假设有10个节点,这10个节点都正常工作参与度就是100%,如果挂了一个节点,参与度就是:90%。是不是有点感觉了。
在分布式场景下,参与度是个重要的指标,尤其是各种分布式应用,那用的更是多。比如有一堆reids集群,挂了几个还可以工作,这就是一个参与度的阀值。在DPOS共识的区块链的场景下,这个值就可以起到一个参考指标的作用。
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293package com.liukai.blockchain.labs;import java.util.Arrays;import java.util.HashMap;import java.ut ...