美文网首页
以太坊RLP使用例子

以太坊RLP使用例子

作者: teeth | 来源:发表于2018-06-13 17:20 被阅读0次

RLP

Recursive Length Prefix,是以太坊中数据序列化和反序列化的主要方法,区块、交易等数据结构会先经过RLP编码再存入数据库。
下面代码是RLP序列化和反序列化的例子。

package main

import (
    "fmt"
    "github.com/ethereum/go-ethereum/rlp"
)

// 结构体定义时,字段名需要定义成大些的,否则解码时无法解码出来,官方demo中A、B就是小写的
// 因此解码不出来
type MyCoolType2 struct {
    Name string
    A, B uint
}

func ExampleEncoder() {
    var t *MyCoolType2 // t is nil pointer to MyCoolType
    // 编码的例子
    bytes_, _ := rlp.EncodeToBytes(t)
    fmt.Printf("%v → %X\n", t, bytes_)

    t = &MyCoolType2{Name: "foobar", A: 10, B: 6}
    bytes_, _ = rlp.EncodeToBytes(t)
    fmt.Printf("%v → %X\n", t, bytes_)

    // 解码的例子
    var val MyCoolType2
    err := rlp.DecodeBytes(bytes_, &val)
    fmt.Printf("MyCoolType2:err=%+v,val=%+v\n", err, val)
}

func main() {
    ExampleEncoder()
}

结果:

<nil> → C0
&{foobar 10 6} → C986666F6F6261720A06
MyCoolType2:err=<nil>,val={Name:foobar A:10 B:6}

参考文献:
ethereum/wiki/RLP

相关文章

  • 以太坊RLP使用例子

    RLP Recursive Length Prefix,是以太坊中数据序列化和反序列化的主要方法,区块、交易等数据...

  • go ethereum 源码解析--rlp

    RLP介绍 RLP是Recursive Length Prefix的简写。是以太坊中的序列化方法,以太坊的所有对象...

  • RLP 递归长度前缀

    RLP 递归长度前缀 RLP(recursive length prefix):递归长度前缀。 RLP编码是以太坊...

  • RLP编码原理

    RLP编码原理 RLP(Recursive Length Prefix,递归长度前缀)编码算法,是以太坊中数据序列...

  • [以太坊源码分析]:RLP编码

    RLP编码 RLP编码是以太坊对象序列化和反序列化的主要方法,可编码任意嵌套的二进制数据。以太坊中多个地方都用到了...

  • 以太坊交易签名

    以太坊的Transcation结构如下: 对交易签名步骤如下: 对交易本身进行rlp编码,再对rlp编码进行kec...

  • 以太坊 RLP详解

    RLP(Recursive Length Rrefix, 递归长度前缀)提供了一种适用于任意二进制数据数组的编码,...

  • 以太坊之rlp

    一般理解rlp你会找到这两篇。https://github.com/ethereum/wiki/wiki/%5B%...

  • 以太坊rlp编解码规则及实现

    rlp编码 具体规则定义可参考该文章以太坊源码学习—RLP编码 这里摘录其关键部分 编码数据类型 (1)byte数...

  • 以太坊区块hash的计算

    在上一篇以太坊rlp编解码规则及实现中,我们看到了字符数组编解码的实现,下面在计算以太坊区块hash时,我们会看到...

网友评论

      本文标题:以太坊RLP使用例子

      本文链接:https://www.haomeiwen.com/subject/kvxseftx.html