精华 关于交易所钱包的一些技术问题
发布于 2 年前 作者 codewinguagua 4212 次浏览 来自

根据我的理解,交易钱包主要功能大概有以下三个: 1.因为交易所是中心机构,需要生成用户地址,保管用户的私钥。(大额冷钱包,和小额热钱包) 2.监控每个最新区块的所有交易,这样才可以主动发现用户是否充值了,经过几个块的确认了,另外还可以监控到用户提现经过几个块确认了。 3.用户提现功能,需要动用私钥来签名交易(btc多重签名),然后发给区块链公有节点。矿工挖矿,验证,打包进区块。

了解了以上几大交易所钱包主要功能,那么有几个问题需要向大神请教。(先给大神敬个礼,嘿嘿) 我上面说的钱包功能不知道理解的对不对,另外交易所的用户量很大(据说火币这样的有几百万的地址),每天都有大量的帐号充值提现,后台需要监控每一个新区块里的所有交易(from 和to),所谓的监控,可以理解为频繁的调用RPC节点读取信息么?这么频繁的读操作(并且还是http 请求)节点会不会承受不住而dang掉,我能想到的是比如ETH,可以过滤掉一些value为0,还有to为空地址的交易,这样可以提高性能。 另外之前的确认有可能会有机会成为叔叔块,那么之后需要重新查询交易hash来确认交易是否在块上,同时需要获取最新块number,这样才能确认交易是不是有效,和number作差来判断它的确认块数,这样又是大量的读操作。我们知道有需要公开RPC接口的ip,像以太坊的很多公有节点是开放RPC接口的,可以调用这些RPC接口,作为一种替换策略,但是安全问题怎么评估

3 回复

生成私钥,用随机数来生成一对钥匙,这样碰撞的概率是不是有点大呢,有必要再做一次查询确认操作么(区块链浏览器查询地址的交易历史来确认有没有被人使用)

首先你的理解是对的,钱包功能主要分为三个

  1. 充值
  2. 提现
  3. 钱包自己的资产管理(私钥管理)

充值、提现属于业务,私钥管理属于安全考虑

另外几个问题我理解你是想问

  1. RPC频繁调用会不会有性能问题

答案是不会让官方程序down,频繁调用有可能会导致timeout,但其实应该能满足一般企业的需求。另外RPC肯定是调用自己搭建的RPC,尽量不要调用别人的

  1. 如何监控blockchain的数据
  • 使用已知的接口,每个区块链都有自己的相关的接口,比如比特币有RPC, 区块、交易数据也有ZMQ -> RPC/ZMQ
  • 自己改写区块链P2P网络通信模块,监控区块链数据
  1. 私钥&地址的随机生成问题

比特币的私钥范围是0到接近2^256的一个大数,只要保证你每次生成私钥的时候,足够随机,每次生成的私钥&地址都会是没有被使用的,不存在生成之前要去区块链上检验的问题。

回到顶部