https://zhuanlan.zhihu.com/p/535573066

python 实现

#coding=utf-8
from web3 import Web3
from eth_account.messages import encode_defunct
if __name__ == '__main__':
'''
//hook metamask
(function() {
'use strict';
var old = window.ethereum.request
window.ethereum.request = function(method,params){
console.log("method:",method);
console.log("params:",params);
console.log("old:",old);
return old.call(this,method,params);
};
// Your code here...
})();
'''
web3 = Web3(Web3.HTTPProvider('HTTP://127.0.0.1:8545'))
#metamask 签名文本
message = 'Welcome to the CREW³ Questboard, please sign this message to verify your identity. Your custom message is: kgfzszccCa1bJ2pVWs~DUjLo0EcTACF2wQsdwgfHyhb8aZBjcvxTmMFRiAGZIpzU'
#metamask hook参数
hex_str = '0x57656c636f6d6520746f207468652043524557c2b3205175657374626f6172642c20706c65617365207369676e2074686973206d65737361676520746f2076657269667920796f7572206964656e746974792e20596f757220637573746f6d206d6573736167652069733a206b67667a737a6363436131624a32705657737e44556a4c6f3045635441434632775173647767664879686238615a426a637678546d4d46526941475a49707a55'
#下面两种方法是等效的
hex_16 = web3.toBytes(int(hex_str, 16)).decode('utf-8')
print(f'hex_16:{hex_16}')
print(web3.toText(hexstr=hex_str))
#初始化wallet
private_key = 'private_key'
wallet = web3.eth.account.from_key(private_key)
#编码签名文本
message = encode_defunct(text=message) #得到编码后的hex_str
#对hex_str进行签名
signed_message = wallet.sign_message(message)
#web3.eth.account.sign_message() 等效方法
#得到签名后的hex字符串
print(web3.toHex(primitive=signed_message.signature))

web3 的身份验证之以太坊签名消息的更多相关文章

  1. 青山不遮,毕竟东流,集成Web3.0身份钱包MetaMask以太坊一键登录(Tornado6+Vue.js3)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_213 上世纪九十年代,海湾战争的时候,一位美军军官担心他们的五角大楼会被敌人的一枚导弹干掉,从而导致在全球的美军基地处于瘫痪状态. ...

  2. 以太坊 web3.js 文档翻译及说明

    这些天,为了录制以太坊DAPP开发实战课程,我准备把web3文档全部翻译一下(并做适当的补充),目前web3.js 0.20.x 版本 已经翻译完成,欢迎大家前往查阅. 这里还几个实用DEMO,供大家 ...

  3. [中文] 以太坊(Ethereum )白皮书

    以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年 ...

  4. Solidity陷阱:以太坊的随机数生成

    title: Solidity陷阱:以太坊的随机数生成 Solidity是一种相当新的语言,因为没有代码是完美的,它包含与代码相关的问题以及你希望用它完成的任务.本文将指导你使用随机数作为以太坊智能合 ...

  5. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  6. 以太坊ETH中智能合约消耗的Gas、Gas Limit是什么?

    以太坊ETH中智能合约消耗的Gas.Gas Limit是什么? 数字货币交易一般是有交易费的,比特币(BTC)的交易费很容易理解,就是直接支付一定额度的BTC作为手续费.而以太坊(ETH)的交易费表面 ...

  7. 以太坊和IPFS如何存储数据

    如何将JSON文件存储在IPFS上,并使用Oraclize访问智能合约中的数据呢? 以太坊是一个成熟的区块链,使开发人员能够创建智能合约,在区块链上执行的程序可以由交易触发.人们经常将区块链称为数据库 ...

  8. 宣布正式发布 Windows Azure 多重身份验证

    身份和访问管理是安全之锚,是企业 IT 部门的首要任务.它是随时随地向员工.合作伙伴和客户提供访问的关键所在.今天,我们非常高兴地宣布正式发布 Windows Azure 多重身份验证,从而为 IT ...

  9. 以太坊: ETH 发送交易 sendRawTransaction 方法数据的签名 和 验证过程

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  10. 以太坊go-ethereum签名部分源码解析

    以太坊go-ethereum签名部分源码解析 golang标准库里的crypto/ecdsa椭圆曲线加密算法所提供的函数有: ecdsa.PublicKey结构体通过持有一个elliptic,Curv ...

随机推荐

  1. Java运算的精度和溢出问题

    double和float的0.1问题 代码如下 public class demo2 { public static void main(String[] args) { float f=0.1f; ...

  2. [WPF]DataContext结果不显示

    namespace DataContext_ItemSource_Demo { public class Person { public string Name; } public class Vie ...

  3. P1605迷宫——题解

    展开 题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次 ...

  4. js函数中的this指向

    写代码的时候遇到这个问题了,在这里复习一下 非箭头函数 非箭头函数的this指向比较好理解,就是调用这个函数的对象,举个栗子: var obj = { foo: { bar: 3, foo:{ bar ...

  5. 顶层QWidget弹窗设置背景为透明,透明部分为黑色。

    setAttribute(Qt::WA_TranslucentBackground); 设置此属性,解决.

  6. QGraphicsView, QGraphicsObject ,QQGraphicsSvgItem 图片接收鼠标事件 拖拉 收放

    由于项目要求,需要加载svg格式图片和pixmap图片,并根据指定坐标在图上进行勾画,并且对相应位置接收鼠标事件. -继承QGraphicsObject,实现加载pixmap的项 myimageite ...

  7. 基于NOSTR协议的“公有制”版本的Twitter,去中心化社交软件Damus用后感,一个极端走向另一个极端

    最近,一个幽灵,Web3的幽灵,在网络游荡,它叫Damus,这玩意诠释了什么叫做病毒式营销,滑稽的是,一个Web3产品却在Web2的产品链上疯狂传销,各方大佬纷纷为其背书,到底发生了什么?Damus的 ...

  8. 关于Spring的IoC容器,你了解多少

    IoC的基本概念   Ioc的全称是Inversion of Control,中文通常翻译为"控制反转".好莱坞原则"Dont't call us, we will ca ...

  9. Spring配置类理解(Lite模式和Full模式)

    Spring中的注解大家在开发中都常常用到,但是如果我说我们常常用的注解修饰了一个类,表示这个类就是一个配置类很多开发者都会有点迷糊了.具体配置类在开发中有什么样的用途我就不多说了,相信很多人都知道, ...

  10. python爬虫学习——列表

    namelist = [] #定义一个空的列表 namelist1 = ["小张","小红","小李"] print(namelist1[0 ...