我在读这篇文章
Steem transaction signing in a nutshell
但是这部分有些看不懂
the back-end only accepts canonical signatures and we have no way of knowing if the signature that is going to be produced will be canonical
意思是系统只接收规范签名
?
然后它用一个自增变量循环生成一个K参数
然后在用这个k参数去签名
然后大致是这部分代码
# Make sure signature is canonical!
#
lenR = sigder[3]
lenS = sigder[5 + lenR]
if lenR is 32 and lenS is 32 :
# ........
有些搞不懂什么是规范签名
(canonical signatures)?如何判断?
查了一下云山雾罩的
if lenR is 32 and lenS is 32 :
lenR和lenS 都等于32就是规范签名?
先谢过了。
不專業只能靠Google想跟學但看不太懂的來了...
來源在此。那什麼是ECDSA,那就是橢圓曲線簽名了。
小弟只是想跟著學(學點名詞主要是... ),班門弄斧莫笑太大聲了啊...
補充一下,剛剛我google,輸入"canonical signature 簽名",你猜排名第一位的文章是什麼?
就是樓主你的文章哪!不到30分鐘,Google就拿去了,這是怎麼回事啊? @smarketing 你是流量專家,有解釋嗎?
你单独搜 canonical signature 此文是排不上第一 ,但加上了 "签名" 就第一了
“canonical signature 签名”, google分两组词来查询的,canonical signature + 签名, google以前抓取的文章,没有相同的内容,该关键字没有竞争 (其它文章不同时包括这两个词 canonical signature + 签名 ),内容独特原创是google最喜欢的!
做流量,许多“长词组合花钱最少”, 但搜索的人不多,搜索高频率的竞争高, 搞这个排名就要靠高质量外链+网页速度.
虽然用户在减少,但文章数并没有少,steemit有几个机器人专门查相似内容,文章原创的还很多, 爬虫很快速度在抓, 写篇文章,不超过10分钟就会被抓,google还是很爱steemit!
專業!
google是什么鬼玩意,听说过没见过:)
这部分google确实挺牛的,steemit的文章收录的非常快,可惜百度不收录!steemit的文章在国内没一篇查得到的!
百度收录了50余条。语法: site:steemit.com
@ace108 @myfirst收录了一些,看了下快照,最近的收录事2017年2月13日的,一直有baiduspiderbot去的,不过返回状态一直503
这个你估计是搞错了。baidu是不会直接收录steemit上的内容的,收录的也是国内网站上相关内容,最多是8btc上一些相关内容。
查询收录的方式,在搜索引擎 输入 site:域名
通用于任何搜索引擎。
还有 百度蜘蛛是全世界网站都会索引的,除非robot.txt禁止了,不然会收录的,影响收录的条件很多,服务器响应速度是其一
你牛,这种搜法我还没试过。我一般是搜索文章的关键词,steemit上的文章从来没搜到过!
你试试搜索 ace108+steemit
对不起,不大明白所以没贡献。
只是举例说明。steemit在百度有一些收录。你的文章百度收录一些,所以把你作为例子了。哈哈
谢谢大神
看了一下,更迷糊了:)
另外,傻傻的点赞机器人总点我们的回复,虽然是因为内容过长导致触发规则
我已经应陈老师,哦,不对刘老师的要求狠狠地教育了它
估计下次它不敢乱点了
正常,机器人也在学习:)
哈哈,刘老师生气了
强烈谴责机器人,怒怼机器人
机器人吓傻了
对 canonical-signature 的需求,主要是因为 ecdsa 的一个特性: 同样的一个讯息,可以有一个以上的有效签名。这就引发了一个所谓 Txn Malleability (不懂中文怎么译)的问题。 MT Gox 的倒闭就与此有关。
对此,不同的区块链圈技术,有不同的对应方式。
参阅: https://steemit.com/cryptocurrency/@dmitry.meshkov/transaction-malleability-in-cryptocurrencies
对于采用 “规范签名”,一般来说,会要求 ecdsa 签名其 s 取小值(小于 n / 2)。
这与 DER encoding 有关。
r, s 都是 unsigned 256-bit-integer,一般来说会以 32-byte 表示。而根据 DER 的要求,数字的首 bit 是用于表示正负号。因此若签名的 r, s 大于 2^255,则必须前缀一个 byte 0x00,否则会被当负数处理。
steem 的签名采用的是 Secp256k1,其 n 值取 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141。
因此,若 s 小于 n 的一半,则经 DER 编码后 s 的长度只会是 32 或更小。
顺便一提:
严格来说,32 byte 的 s,数值还是有可能会大于 n/2。
但几率极小(约 1/2^127),现实中不可能发生。
至于为什么规定 r 只能取 32 byte (以及 s 不能小于 32),则不得而知。
但 steem 所采用的标准是直接承续于 Bitshares,也许 @abit 会清楚其由来。
1024个 赞也不能表达我的谢意和敬意
您回答的这部分内容正是我想学习和了解的
万分感激:)
历害了,看不出来,老牛潜水都挺深 :)
好样的,继续努力学习 :)
老了,学不动了
看点东西就犯困
https://pypi.python.org/pypi/ecdsa
补充一个Pure-Python ECDSA (Elliptic Curve Digital Signature Algorithm)库
python-graphenelib用的这个库
继续补充:
找到一篇文章
How the ECDSA algorithm works
http://kakaroto.homelinux.net/2012/01/how-the-ecdsa-algorithm-works/
对其中这段话深表认同啊:
“hey kids, don’t slack off at school, listen to your teachers, that stuff might be useful for you some day!”
哭