百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

精通比特币—比特币常见客户端、资料库、工具包

yuyutoo 2024-10-11 21:39 20 浏览 0 评论

除了参考客户端(bitcoind),还可以使用其他的客户端和资料库去连接比特币网络和数据结构。这些工具都由一系列的编程语言执行,用他们各自的语言为比特币程序提供原生的交互。

其他的执行方式包括:

libbitcoin和sx tools

一款C++,通过命令行完成的全节点多线程客户端与程序库

bitcoinj

一款全节点java客户端和程序库

btcd

一款全节点GO 语言的比特币客户端

Bits of Proof(BOP)

一款Java企业级平台的比特币工具

picocoin

一款轻量级比特币执行客户端

pybitcointools

一款Python语言的比特币程序库

pycoin

另一款Python语言的比特币程序库

在其他的编程语言中,还有许多形式的比特币(程序)库。开发者也尽其所能,一直在尽力创造新的比特币工具。

Libbitcoin和sx Tools

Libbitcoin程序是一款基于C++层面,可扩展、多线程、模块化的执行工具。它可以支持全节点客户端和一款叫做sx的命令行工具,并可以提供我们本章所讨论的比特币命令相同的功能。Sx工具同时提供了管理和操作工具,是bitcoind所不能提供的,包括type-2型确定性密钥和密码助记工具。

安装sx

若要安装sx工具以及相关libbitcoin库,请在Linux操作系统中下载并安装在线安装包:

$ wget http://sx.dyne.org/install-sx.sh
$ sudo bash ./install-sx.sh

现在你应当已经安装好了sx工具。输入没有参数的sx命令来显示帮助文档,帮助文档列出了所有可用的命令(详见附录4)。

sx工具提供了许多实用的编码与解码地址的命令,可以从不同的编码方式转化,也可以转化成不同的方式。通过他们,可以探索更多的编码方式,比如Base58,Base58Check,hex,等等。

pycoin

pycoin最初由Richard Kiss创立并维护,是一款基于Python库,并可以支持比特币密钥的操作和交易的客户端,甚至可以支持编译语言从而处理非标准交易。

Pycoin库同时支持Python2(2.7x)与Python3,以及一些便于使用的命令行工具,比如ku和tx。如果在Python3的虚拟环境下安装 pycoin0.42,请输入以下命令:

$ python3 -m venv /tmp/pycoin
$ . /tmp/pycoin/bin/activate
$ pip install pycoin==0.42
Downloading/unpacking pycoin==0.42
 Downloading pycoin-0.42.tar.gz (66kB): 66kB downloaded
 Running setup.py (path:/tmp/pycoin/build/pycoin/setup.py) egg_info for pack-age pycoin
Installing collected packages: pycoin
 Running setup.py install for pycoin
 Installing tx script to /tmp/pycoin/bin
 Installing cache_tx script to /tmp/pycoin/bin
 Installing bu script to /tmp/pycoin/bin
 Installing fetch_unspent script to /tmp/pycoin/bin
 Installing block script to /tmp/pycoin/bin
 Installing spend script to /tmp/pycoin/bin
 Installing ku script to /tmp/pycoin/bin
 Installing genwallet script to /tmp/pycoin/bin
Successfully installed pycoin
Cleaning up...
$

这里有一个简单的Python脚本,通过pycoin库来交易比特币:

#!/usr/bin/env python
from pycoin.key import Key 
from pycoin.key.validate import is_address_valid, is_wif_valid from pycoin.services import spendables_for_address
from pycoin.tx.tx_utils import create_signed_tx 
def get_address(which): 
 while 1: 
 print("enter the %s address=> " % which, end='') 
 address = input()
 is_valid = is_address_valid(address)
 if is_valid: 
 return address
 print("invalid address, please try again") 
src_address = get_address("source")
spendables = spendables_for_address(src_address) print(spendables) 
while 1:
 print("enter the WIF for %s=> " % src_address, end='') 
 wif = input()
 is_valid = is_wif_valid(wif)
 if is_valid: 
 break
 print("invalid wif, please try again") 
key = Key.from_text(wif)
if src_address not in (key.address(use_uncompressed=False), key.address(use_un compressed=True)): 
 print("** WIF doesn't correspond to %s" % src_address) 
print("The secret exponent is %d" % key.secret_exponent()) 
dst_address = get_address("destination")
tx = create_signed_tx(spendables, payables=[dst_address], wifs=[wif])
print("here is the signed output transaction") 
print(tx.as_hex())

btcd

btcd是一款基于Go语言的全节点比特币工具。目前,它通过使用精准的规则(包括bugs),下载、验证和服务区块链。它同时依靠新发掘出来的区块来维持交易池,同时依赖没有形成区块的单独交易。在缜密的规则以及检查下,确保了每笔独立交易的安全,并且可以过滤基于矿工需求的交易。

btcd与bitcoind的一个主要区别是btcd不包含比特币钱包的功能,其实这是一个精心的设计。这意味着你不能直接通过btcd进行比特币交易。然而这项功能可以由正在研发的btcwallet与btcgui两个项目提供。另一个显著的区别是btcd同时支持HTTP POST(比如bitcoind)与推荐使用的Websockets两种通信协议的请求。并且btcd的RPC连接默认设置为TLS-开启。

安装btcd

若要安装Windows版btcd,请从GitHub下载并运行msi;如果你已经安装了Go语言,请在Linux中输入以下命令行:

$ go get github.com/conformal/btcd/...

若要更新btcd到最新版本,请输入:

$ go get -u -v github.com/conformal/btcd/...

调试btcd

btcd拥有许多配置选项,可以通过以下命令来查看:

$ btcd --help

btcd预装了许多好用的功能包,比如btcctl。它是一种可以通过RPC来控制和查询的令行工具。Btcd并没有默认开启了RPC服务器,你必须通过以下命令行来配置RPC用户名及密码:

btcd.conf:

[Application Options]
rpcuser=myuser
rpcpass=SomeDecentp4ssw0rdbtcctl.conf:
[Application Options]
rpcuser=myuser
rpcpass=SomeDecentp4ssw0rd

若果你想要重写配置,请输入以下命令:

$ btcd -u myuser -P SomeDecentp4ssw0rd
$ btcctl -u myuser -P SomeDecentp4ssw0rd

可以通过以下命令来查询一系列的选项:

$ btcctl --help

相关推荐

电脑 CMD 命令大全:简单粗暴收藏版

电脑CMD命令大全包括了许多常用的命令,这些命令可以帮助用户进行各种系统管理和操作任务。以下是一些常用的CMD命令及其功能:1、系统信息和管理...

电脑维修高手必备!8个神奇DOS命令,自己动手不求人

我相信搞电脑维修或者维护的基本都会些DOS的命令。就算Windows操作系统是可视化的界面,但很多维护检查是离不开DOS命令的。掌握好这些命令,你不仅能快速诊断问题,还能解决90%的常见电脑故障。下...

一个互联网产品总监的设计技巧总结 - 技术篇

古语:工欲善其事必先利其器。往往在利其器后我们才能事半功倍。从这个角度出发成为一个合格的产品经理你需要的是“利其器”,这样你才能产品的设计过程中如鱼得水,得心应手。有些产品经理刚入职,什么都感觉自己欠...

超详解析Flutter渲染引擎|业务想创新,不了解底层原理怎么行?

作者|万红波(远湖)出品|阿里巴巴新零售淘系技术部前言Flutter作为一个跨平台的应用框架,诞生之后,就被高度关注。它通过自绘UI,解决了之前RN和weex方案难以解决的多端一致性...

瑞芯微RK3568|SDK开发之环境安装及编译操作

1.SDK简介一个通用LinuxSDK工程目录包含有buildroot、app、kernel、device、docs、external等目录。其中一些特性芯片如RK3308/RV1108/R...

且看L-MEM ECC如何守护i.MXRT1170从核CM4

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M4内核的L-MEMECC功能。本篇是《简析i.MXRT1170Cortex-M7F...

ECC给i.MXRT1170 FlexRAM带来了哪些变化?

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M7内核的FlexRAMECC功能。ECC是“ErrorCorrectingCode”...

PHP防火墙代码,防火墙,网站防火墙,WAF防火墙,PHP防火墙大全

PHP防火墙代码,防火墙,网站防火墙,WAF防火墙,PHP防火墙大全资源宝整理分享:https://www.htple.net...

从零开始移植最新版本(2023.10)主线Uboot到Orange Pi 3(全志H6)

本文将从零开始通过一步一步操作来实现将主线U-Boot最新代码移植到OrangePi3(全志H6)开发板上并正常运行起来。本文从通用移植思路的角度,展现是思考的过程,通过这种方式希望能让读者一通百...

可视化编程工具Blockly——定制工具箱

1概述本文重点讲解如何定制Blocklytoolbox上,主要包含如下几点目标:如何为toolbox不同类别添加背景色如何改变选中的类别的外观如何为toolbox类别添加定制化的css如何改变类别...

用户界面干货盘点(用户界面的基本操作方法)

DevExpressDevExpressWPF的DXSplashScreen控件在应用加载的时候显示一个启动界面。添加DXSplashScreen后,会默认生成一个XAML文件,当然,你也可...

Vue3+Bootstrap5整合:企业级后台管理系统实战

简洁而不简单,优雅而不失强大在当今快速发展的企业数字化进程中,高效、美观的后台管理系统已成为企业运营的核心支撑。作为前端开发者,我们如何选择技术栈,才能既保证开发效率,又能打造出专业级的用户体验?答案...

什么?这三款i.MXRT型号也开放了IAP API?

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1050/1020/1015系列ROM中的FlexSPI驱动API使用。今天痞子衡去4S店给爱车做保养了,...

OneCode基础组件介绍——表格组件(Grid)

在企业级应用开发中,表格组件是数据展示与交互的核心载体。OneCode平台自研的Grid表格组件,以模型驱动设计...

开源无线LoRa传感器(光照温湿度甲醛Tvoc)

本开源项目基于ShineBlinkC2M低代码单片机实现,无需复杂单片机C语言开发。即使新手也可很容易用FlexLua零门槛开发各种功能丰富稳定可靠的IoT硬件,更多学习教程可参考Flex...

取消回复欢迎 发表评论: