自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jason_cuijiahui的博客

区块链+人工智能

  • 博客(8)
  • 收藏
  • 关注

原创 Python3中的yield的用法/解析

参考自任何使用yield的函数都称之为生成器,生成器这个概念就不多说了。例子例子1 * 计数器def count(n): while n > 0: # 迭代器返回n yield n # 下一次迭代器开始的地方 n -= 1for i in count(5): print(i)例子2 * 斐波拉契数列def fibonacci(): a = b = 1...

2018-12-10 22:00:23 4293

原创 环签名(Ring signature)

参考自环签名指的是在n个公钥中隐藏自己拥有私钥的那个公钥,具体应用就在于区块链上隐藏交易发送人(地址/公钥)。准备首先定义以下函数,其中EkE_{k}Ek​为对称加密算法,k为EkE_{k}Ek​对应的对称密钥Ck,v(y1,y2,…,yn)=Ek(yn⊕Ek(yn−1⊕Ek(⋯⊕Ek(y1⊕v)… )))=v{\displaystyle C_{k,v}(y_...

2018-12-09 23:16:51 15837

原创 区块链中的隐地址(stealth addresses)

Alice生成一个Bob才能有私钥的隐地址(公钥T),两者不需要交互。R需要在交易中被附上。推导:T=B+Hash(rV)G=B+Hash(rvG)G=B+Hash(vR)G=bG+Hash(vR)G=(b+Hash(vR))GT = B + Hash(rV)G = B + Hash(rvG)G \\ = B + Hash(vR)G = bG + Hash(vR)G \\ = (b+Hash...

2018-12-09 17:57:56 1624 2

原创 以太坊合约地址的生成方式

目前CreateAddress,以太坊的地址取决于部署合约的人的地址,当前区块链上部署者的nonce(=该部署交易的nonce)。地址生成函数// CreateAddress creates an ethereum address given the bytes and the noncefunc CreateAddress(b common.Address, nonce uint64) c...

2018-12-03 00:11:40 6087 1

原创 golang中switch的用法

package mainimport ( "fmt")func main() { ids := []int{1, 2, 3, 4, 5, 6} for i := range ids { switch id := ids[i]; id { case 1: fmt.Println("Hit id 1!") case 2, 3: fmt.Println("Hit...

2018-12-02 23:52:55 599

原创 golang如何获取变量的类型

package mainimport ( "reflect" "fmt")type Info struct { id int name string}func getType1(v interface{}) string { return fmt.Sprintf("%T", v)}func getType2(v interface{}) string { retu...

2018-12-02 17:44:57 2786

原创 golang中的闭包的意义和用法

什么是闭包?Go 函数可以是一个闭包。闭包是一个函数值,它引用了函数体之外的变量。 这个函数可以对这个引用的变量进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。我的不靠谱的理解,一个闭包相当于一个类的实例,函数体之外的变量相当于这个实例存储的变量。没有闭包的时候,函数就是一次性买卖,函数执行完毕后就无法再更改函数中变量的值(应该是内存释放了);有了闭包后函数就成为了一个变量的值,只要...

2018-12-02 16:54:29 8329 1

原创 golang的for range原理以及引致的一些奇怪问题

基本用法下述两个函数test1与test2运行结果有何区别?func test1() { intArray := []int{1, 2, 3, 4} for _, val := range intArray { val++ } // 仍然为[1, 2, 3, 4] fmt.Println(intArray)}func test2() { intArray := []int...

2018-12-01 11:39:02 1857

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除