ethereum/EIPs-712 Ethereum typed structured data hashing and signing
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md
| eip | title | author | discussions-to | status | type | category | created | requires |
|---|---|---|---|---|---|---|---|---|
|
712
|
Ethereum typed structured data hashing and signing
|
Remco Bloemen <remco@wicked.ventures>, Leonid Logvinov <logvinov.leon@gmail.com>, Jacob Evans <jacob@dekz.net>
|
Draft
|
Standards Track
|
Interface
|
2017-09-12
|
155, 191
|
一个对结构化数据的哈希和签名标准
翻译出处:https://segmentfault.com/a/1190000015647458
好好认真看看,为什么有这个,因为我们之前EIP-191都是对字符串等简单数据进行处理,而没有对复杂的结构化数据进行处理,如结构体等
简易大纲
对数据签名是一个已经被解决的问题如果我们只关注那些字节字符串。遗憾的是在这个真实的世界里,我们关心的是那些复杂的、有意义的信息。把结构化数据进行哈希处理不是件小事,错误的话会导致系统丧失安全性。
因此,谚语“不要推出你自己的加密算法”在这里就适用了。相反,我们需要使用一个经过同行评审的、经过充分测试的标准。这个EIP旨在成为这个标准。
摘要
这是一个对结构化数据哈希和签名的标准,而不仅仅是字节字符串。它包含:
- 正确编码功能的理想框架
- 结构化数据和solidity中的结构体类似并且兼容的详细说明
- 这些结构的实例的安全哈希算法
- 这些实例可以被安全地包含在一组可签名消息内
- 领域分离的可扩展机制
- 新的RPC调用:
eth_signTypedData - 应用于EVM的优化的哈希算法
动机
这个EIP旨在提高链下消息签名对链上的可用性。我们可以看到,因为节省gas以及减少链上交易的原因,采用链下消息签名的需求日益增长。现在已经被签名的消息,展示给用户的是一串难以理解的16进制的字符串,附带一些组成这个消息的项目的上下文。

这里我们大致描绘了编码结构化数据,并且在用户签名时把结构化数据展示给他们确认的场景。下面就是当用户签名时,应该展现给他们的符合EIP规范的消息 的例子:

签名以及哈希概要
签名方案由哈希算法和签名算法组成。以太坊选择的签名算法是secp256k1,哈希算法选择了keccak256,这是一个从字节串
ethereum/EIPs-712 Ethereum typed structured data hashing and signing的更多相关文章
- Introduction to Structured Data
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- Bigtable: A Distributed Storage System for Structured Data
https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf Abstr ...
- Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- Saving structured data with json
Strings can easily be written to and read from a file. Numbers take a bit more effort, since the rea ...
- 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
1.使用DIH上传结构化数据 许多搜索应用索引结构化数据,如关系型数据库.DIH提供了一个这样的存储并索引结构化数据的机制.除了关系型数据库,solr可以索引来自HTTP的内容,基于数据源如RSS和A ...
- Note: Bigtable, A Distributed Storage System for Structured Data
Abstract Introduction:: Bigtable设计主旨:可扩地扩展到pByte级别和数千台机器的系统, 通用.可伸缩.高性能.高可用性. 不实现完整的关系数据模型,而是支持一个可 ...
- Spark SQL is a Spark module for structured data processing.
http://spark.apache.org/docs/latest/sql-programming-guide.html
- ethereum/EIPs-191 Signed Data Standard
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-191.md eip title author status type category c ...
- go ethereum源码分析 PartIV Transaction相关
核心数据结构: core.types.transaction.go type Transaction struct { data txdata // caches hash atomic.Value ...
随机推荐
- Select2异步搜索数据
$('#countryID').select2( { placeholder: "请选择国家", ajax: { dataType: 'json', type: 'POST', d ...
- 聚簇索引(聚集索引) 不可作用于GUID类型字段
聚簇索引(又名聚集索引) 不可作用于GUID类型字段,即:数据库中不要把GUID类型作为主键或设置为聚集索引. 聚集索引:索引的物理存储顺序与数据表中行数据物理存储顺序一致(索引存储物理有序). 非聚 ...
- 【Java面试】1、基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充. 源码分享:https: ...
- Java使用foreach语句对数组成员遍历输出
/** * 本程序使用foreach语句对数组成员进行遍历输出 * @author Lei * @version 2018-7-23 */ public class ForeachDemo { pub ...
- 如何把string转换char*类型
需要调用string头文件 ( #include<string> ) 用string里的函数c_str()可以把string转换为char* 例如 char * c_str2=str1. ...
- python爬虫入门---第三篇:保存一张图片
import requests import os url = 'http://imgsrc.baidu.com/forum/w%3D580%3B/sign=749ed018cecec3fd8b3ea ...
- React 入门学习笔记整理(五)—— state
1.state 1)组件本省也是有状态的,定义在组件内部的state中,state的状态只能由组件自身改变,任何其他组件都不能改变. 当需要改变state时,通过调用setState方法来改变,set ...
- python联系题1
一.有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. # _*_ ...
- Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
此文章是关于NDK线程的第二篇理论知识笔记.主要有两个点,如下: 1.pthread_create(Too many arguements, expected 1) ?2.线程中如何获取JNIEnv? ...
- 国网SGCC_UAP 反编译.class文件源代码
SGCC_UAP和eclipse操作方式差不多,对于用惯了IDEA和Android Studio的人来说非常不方便,按住Ctrl点击类名不能查看源码. 因为jar包下都是.class文件,所以需要安装 ...