美文网首页
bitcoinJ基本结构

bitcoinJ基本结构

作者: 风生水起_2018 | 来源:发表于2018-04-25 15:31 被阅读0次

    一:NetworkParameters 用来管理网络环境,Each network has its own genesis block、port and
    address prefix,你不会在不同的网络间发送比特币。
    1)Main:表示主网,也就是当前比特币所有用户交易的网络,bitcoind中的默认值。
    2)Testnet:测试网,测试网中专门有一条测试链,所有的交易都只是用于测试,并且测试网中的币可
    以方便的获取,主要目的就是模拟真实交易环境测试新的功能。
    3)unittest:单元测试,支付协议使用。
    4)Regtest:回归测试,又称为私有网,用于个人开发测试,挖矿难度较低,并且参数都可以自行设
    置。一般在本地环境开始时使用Regtest运行一个守护进程,本地开发完成后,进入Testnet进行大
    规模实际环境测试,运行正常后再进入主网,这也是目前众多区块链(ICO)项目主流开发路线。
    In regtest mode there’s no public infrastructure, but you can get a new block whenever you want without having to wait for one by running "bitcoind -regtest setgenerate true" on the same machine as the regtest mode bitcoind is running.regtest 模式下,可执行文件bitcoind 会连接localhost。
    二:Wallet 来保存ECKeys 和其它数据;PeerGroup来管理网络连接 ;ECKey管理私钥;
    BlockChain 管理共享的全部数据结构;BlockStore负责保存数据到某处,比如磁盘等。
    WalletEventListener 接受钱包的各种事件。
    WalletAppKit 创建并把上边这些对象组合在一起,一个基本的发送接收btc必须有上边的要素。WalletAppKit实现了google Guava包里的Service接口,用于封装一个服务对象的运行状态、包括start和stop等方法。 例如web服务器,RPC服务器、计时器等可以实现这个接口。对此类服务的状态管理并不轻松、需要对服务的开启/关闭进行妥善管理、特别是在多线程环境下尤为复杂。Guava包提供了一些基础类帮助你管理复杂的状态转换逻辑和同步细节。
    WalletAppKit 会在区块链全部同步到本地后启动,如何快速同步呢?单独一篇来说吧。
    运行后会有两个文件 .wallet 和 .spvchain二者是一起的。
    三:事件监听
    WalletEventListener 、BlockChainListener 、PeerEventListener 、TransactionConfidence.Listener 交易安全的回调监听、WalletCoinsReceivedEventListener等,大部分app并不需要全部的事件,可以取一部分,这些事件运行在专用的后台线程里user thread,如果用户线程落后,则当事件侦听器调用在堆上排队时,内存膨胀可能发生,可以使用Threading.SAME_THREAD规避,也谨慎使用.


    image.png

    自定义发送地址和交易费用(每千字节的fee),交易的优先权有fee/size决定,较大的交易需要较高的费用。交易的优先级是由费用除以大小决定的,因此较大的交易要求更高的费用被认为是与小交易相同的,尽管大交易有更高的fee,但并不影响优先级。

    http://www.gavinzhang.work/2018/03/14/blockchain/比特币/Bitcoinj中的上下文NetworkParameters/
    这篇写的更好

    相关文章

      网友评论

          本文标题:bitcoinJ基本结构

          本文链接:https://www.haomeiwen.com/subject/bzijlftx.html