github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/signer/storage/storage.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 //版权所有2018 Go Ethereum作者 10 //此文件是Go以太坊的一部分。 11 // 12 //Go以太坊是免费软件:您可以重新发布和/或修改它 13 //根据GNU通用公共许可证的条款 14 //自由软件基金会,或者许可证的第3版,或者 15 //(由您选择)任何更高版本。 16 // 17 //Go以太坊的分布希望它会有用, 18 //但没有任何保证;甚至没有 19 //适销性或特定用途的适用性。见 20 //GNU通用公共许可证了解更多详细信息。 21 // 22 //你应该已经收到一份GNU通用公共许可证的副本 23 //一起去以太坊吧。如果没有,请参见<http://www.gnu.org/licenses/>。 24 // 25 26 package storage 27 28 import ( 29 "fmt" 30 ) 31 32 type Storage interface { 33 //按键存储值。0长度键导致无操作 34 Put(key, value string) 35 //get返回以前存储的值,如果该值不存在或键的长度为0,则返回空字符串 36 Get(key string) string 37 } 38 39 //短暂存储是一种内存存储,它可以 40 //不将值持久化到磁盘。主要用于测试 41 type EphemeralStorage struct { 42 data map[string]string 43 namespace string 44 } 45 46 func (s *EphemeralStorage) Put(key, value string) { 47 if len(key) == 0 { 48 return 49 } 50 fmt.Printf("storage: put %v -> %v\n", key, value) 51 s.data[key] = value 52 } 53 54 func (s *EphemeralStorage) Get(key string) string { 55 if len(key) == 0 { 56 return "" 57 } 58 fmt.Printf("storage: get %v\n", key) 59 if v, exist := s.data[key]; exist { 60 return v 61 } 62 return "" 63 } 64 65 func NewEphemeralStorage() Storage { 66 s := &EphemeralStorage{ 67 data: make(map[string]string), 68 } 69 return s 70 }