精华内容
下载资源
问答
  • 比特币钱包
    2018-03-01 14:59:38

    钱包技术总览

    比特钱包包含钥匙,而没有比特币,它由公钥和私钥组成,用户用钥匙进行交易。比特币存储在区块链中。
    钱包由两个最基础的类型组成。

    • 不确定钱包

    • 确定钱包

    第一种类型钱包的每个钥匙能够通过随机数组被独立的确定,第二种类型则所有的钥匙能够被一个主要的钥匙推到出来,一个被称之为播种的方式。



    不确定(随机)钱包


    此种钱包能够随机的推到出私钥。例如,对于此类钱包的第一次使用,需要配置很多钥匙,并且每个钥匙只能被使用一次,这样意味着钱包需要被频繁的恢复

    确定钱包(播种)钱包


    此种钱包类型中,所有的私钥通过一个公共的种子来被推到出来,一个单方向哈希函数。这种钱包能够高效的导入导出,并且在不同钱包中容易的转移用户的钥匙,



    HD 钱包 (BIP-32/BIP-44)


    此种钱包能够通过一个公共木节点来推到出孩子节点,并且可以不断的延伸深度。

    钱包最好的实践

    作为一个比特币钱包技术的设计,他们共同点是:

    • 使用BIP-39,助记的编码单词
    • HD钱包,使用BIP-32
    • 多意图钱包框架,使用BIP-43技术
    • 多流通以及多账号钱包,依据 BIP-44
    更多相关内容
  • 比特币钱包:比特币是一种点对点的电子现金系统,没有实物形态,可以储存在比特币钱包里,比特币钱包里储存着你的比特币信息,包括比特币地址,类似你的银行卡账号;私钥类似于你的银行卡密码。就像实物钱包里可以...
  • breadwallet是一款安全、可靠和便捷的比特币钱包,可使用户免于恶意软件和其他应用中常见的安全问题的骚扰,充分利用了iOS提供的安全功能,包括AES硬件加密、app沙盒和数据保护、代码签名以及keychain服务。...
  • 比特币钱包软件,最新版本 0.17.0 MacOS 专用 方便网络线路质量不高的朋友下载
  • 1、非对称加密 2、单向散列函数 3、常见的单向散列函数:MD5、SHA、CRC、MAC 4、钱包的生成:生成私钥、通过私钥生成公钥、通过...6、比特币钱包分类:硬件钱包(冷钱包)、软件钱包(热钱包) 7、申请TokenPocket钱包

    目录

    非对称加密

    单向散列函数

    常见的单向散列函数

    MD5

    SHA

    CRC

    MAC

    钱包的生成

    生成私钥

    通过私钥生成公钥

    通过公钥生成钱包地址

    为什么需要比特币钱包

    比特币钱包分类

    硬件钱包(冷钱包)

    软件钱包(热钱包)

    申请TokenPocket钱包

    总结


    非对称加密

    在非对称加密中,将密钥分为加密密钥与解密密钥,也就是我们常说的公钥和私钥。公钥和私钥一一对应,由公钥加密的密文,必须使用公钥配对的私钥才可以解密。

    单向散列函数

    单和散列函数,也称杂凑函数或Hash函数,指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也称为“散列值”或“消息摘要”,其长度通常在128~256位之间。

    特点:

    1、根据任意长度的消息计算出固定长度的散列值

    2、能够快速计算出散列值

    3、消息不同散列值也不同

    4、具备单向性

    常见的单向散列函数

    MD5

    Message Digest Algorithm 5,是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据进行暗码运算成一个128位的数值。

    SHA

    这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值。SHA1为160位(20字节),SHA2(SHA256、SHA384、SHA512)。

    CRC

    循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测的一种很好的手段。CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类。

    MAC

    Message Authentication Code,消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列算法)就是这种函数的一个例子。

    以上的消息不一定是人类能够读懂的文字,也可以是图像文件或者声音文件。单向散列函数不需要知道消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。以SHA256单向散列函数为例,它所计算出的散列值永远是256比特(32字节)。

    为了能够确认完整性,消息中哪怕只有1比特的改变,也必须有很高的概率产生不同的散列值。如果单向散列函数计算出的散列值没有发生变化,那么消息很容易就会被篡改,这个单向散列函数也就无法被用于完整性的检查。两个不同消息产生同一个散列值的情况称为碰撞(collision)。如果要将单向散列函数用于完整性检查,则需要确保在事实上不可能被人为地发现碰撞。

    钱包的生成

    比特币钱包其实就是一个字符串地址。这个地址和用户的私钥、公钥相关。私钥可以生成公钥,公钥再生成比特币钱包地址。

    生成私钥

    生成钱包要从生成私钥开始,选择私钥的过程就是在一个限定范围内,随机选择一个数。私钥必须是32个字节(即256bit,256个二进制)。实际使用中,私钥可以表示为二进制格式、八进制格式、Base64格式、或者助记词格式。所以保证比特币安全的一条重要原则就是:一定要用真随机数作为私钥。在Bitcoin Core等钱包里,随机数生成算法已经非常专业,重合的概率为0,可以放心使用。

    生成私钥的时候唯一要考虑的就是安全问题。例如,通过Python语言中random.getrandbits(256)就可以生成256位的随机数,就可以当私钥用了,但是这样生成的随机性其实只取决于生成的时间,所以如果攻击者能够猜到你生成这个私钥的大概时间就能相对容易通过暴力搜索的形式获取私钥。而采用secrets.randbits(256)就比较安全一些,因为随机性取决于系统上的一些不可复现的行为,即使我把系统给你,你也不可能重新获得我的私钥。

    实际中,有人会到 https://www.bitaddress.org上面生成私钥,这里的随机性取决于我们用鼠标在屏幕上随意滑动的轨迹。

    通过私钥生成公钥

    比特币通过私钥生成公钥使用的是一套名为ECDSA的签名算法,全称是椭圆曲线数字签名算法。ECDSA还可以选择不同的曲线,比特币选择的曲线叫做secp256k1。从这个公钥出发,反推回私钥几乎是不可能的。

    通过公钥生成钱包地址

    为什么需要比特币钱包

    如果没有比特币钱包,你就不能接收、存储或消费比特币。可以把比特币钱包理解为对接比特币网络的个人接囗,就像网上银行账户对接的是正规货币系统接囗一样。

    比特币钱包包含私人密钥,通过密码指令,自己可以消费比特币。实际上,需要被存储或者说需要受到保护的不是比特币钱包,而是私钥,它给了你管理比特币的权限。

    实际上,钱包里并没有比特币,它只是问比特币网络:“我的这个地址里有多少个比特币?”

    在区块链世界中,我们持有的比特币只是一串私钥,一串256位的二进制数。如果你扔硬币,正面为0,反面为1,连续扔256次,把它记录下来,再把这串二进制数值转换为十六进制数,你的所有家当就在这串私钥上了。

    比特币钱包分类

    硬件钱包(冷钱包)

    硬件钱包就和它的名字一样,就是一个硬件,就类似于U盘,存储你的私钥等重要数据。使用硬件钱包的人群大多数都是用来囤币的。它的安全系数较高。它们能离线存储私钥,因此可免受黑客攻击或是恶意插件的盗取。

    软件钱包(热钱包)

    软件钱包指的是运行在互联网上的第三方软件,私钥是一串加密代码。因为热钱包是在联网设备上生成私钥,所以这些私钥不能被认为是百分之百安全的。它较为适合频繁交易,不适合长期囤币拿着不放。如今的软件钱包其实是与“交易所”钱包有所关联,网站注册,手机APP下载,电脑端安装。目前市场上都有相对安全的比特币交易所(如火币、币安、币印等)。

    申请TokenPocket钱包

    下载TokenPocket钱包:https://tokenpocket.pro

    注:需要科学上网 

    下载安装后打开软件,如下图所示:

    输入密码与确认密码,如下图所示:

    点击确认后,进行导入私钥(私钥生成可通过https://www.bitaddress.org),选择比特币或以太坊,如下图所示: 

     

    我选的是Bitcoin进入,如下图所示:

    总结

    1、非对称加密
    2、单向散列函数
    3、常见的单向散列函数:MD5、SHA、CRC、MAC
    4、钱包的生成:生成私钥、通过私钥生成公钥、通过公钥生成钱包地址
    5、为什么需要比特币钱包
    6、比特币钱包分类:硬件钱包(冷钱包)、软件钱包(热钱包)
    7、申请TokenPocket钱包

    展开全文
  • 区块链编程——比特币钱包详解

    千次阅读 2020-10-14 11:16:34
    写在前面 最近正在看区块链和6G方面一些相关的东西,接下来一段时间,应该会分享一系列6G和区块链...比特币钱包不像我们平常使用的实体的钱包一样,我们实体的钱包里面装的是钱,但是比特币钱包里面装的不是比特币,而

    写在前面

    最近正在看区块链和6G方面一些相关的东西,接下来一段时间,应该会分享一系列6G和区块链方面的东西,一方面是记录自己的学习过程,另一方面也想分享出来,大家一起讨论。

    比特币钱包

    • 从广义上来讲,钱包是一个应用程序,为用户提供交互界面。钱包控制用户访问权限,管理私钥和比特币地址,跟踪余额以及创建和签名交易
    • 从狭义上讲,钱包是指用于存储和管理用户私钥的一个数据结构

    关于比特币钱包的一个理解

    比特币钱包不像我们平常使用的实体的钱包一样,我们实体的钱包里面装的是钱,但是比特币钱包里面装的不是比特币,而是密钥。而比特币被记录在比特币网络的区块链中,用户通过使用钱包中的秘钥签署交易来控制网络上的比特币。从某种意义上说,比特币钱包是一个钥匙扣。而钱被锁在成为区块链的箱子里,我们通过使用自己的钥匙能管理被所在箱子里的钱。

    比特币钱包只包含私钥,不包含比特币。上面说的是密钥。这里说的是私钥,那公钥包含不包含呢。看接下来的解释应该可以明白。

    用户是使用私钥来对交易进行签名。这里的签名指的是数字签名,就是通过非对称加密算法,使用自己的私钥对交易信息进行加密。然后公钥是公开的。其他用户可以通过公开的公钥来对加密的交易信息进行解密。从而证明该用户确实用户交易转账的所有权。然后,比特币以交易记录的形式存储在区块链当中。

    钱包的分类

    • 非确定性钱包:每个密钥都是从随机数独立生成的,密钥彼此之间无关联。这就是简单的一堆私钥的集合(Just a bunch of keys)简称JBOK钱包。
    • 确定性钱包:其中所有的私钥都是从一个主私钥派生出来的,这个主私钥即为种子seed。所以钱包中的所有私钥都是相互关联的,如果有原始的种子,则可以再次派生出全部的私钥。
    确定性钱包有许多不同的密钥派生方法,最常用的派生方法是使用树状结构,成为分层确定性钱包或者HD钱包。然后,为了便于使用,种子会被编码为英文单词,称为助记词。这里注意种子和助记词之间的关系,是种子被编码为助记词!!!

    非确定性钱包的特点

    • 非确定钱包因为难以管理,备份以及导入
    • 随机密钥的缺点就是如果你生成很多私钥,那么你必须保存所有私钥的副本,这意味着这个钱包必须经常地备份
    • 每个密钥都必须备份,否则如果钱包变得无法访问,则其控制的资金将不可避免地丢失
    • 如果为了减少备份而复用地址,这种情况直接与避免地址重复的原则相冲突——每个比特币地址只用于一次交易
    • 地址重复使用会将多个交易与此地址关联在一起,这样会减少隐私

    图1

    确定性(种子)钱包的特点

    • 私钥通过种子利用单向散列函数,也就是hash函数从公共种子派生出来
    • 种子是一串随机生成的数字,这串数字结合索引编号和“链码”可派生出其他私钥
    • 在确定性钱包中,种子可以恢复所有派生的私钥,因此创建一个简单的种子备份也就足够了
    • 种子也可以用于钱包的导入/导出,在不同的钱包之间轻松转移所有私钥

    图2

    分层确定性钱包

    确定性钱包目前最高级的版本是通过BIP-32标准定义的HD钱包,HD钱包的私钥是以树状结构派生的,父私钥可以派生出一系列子私钥,每个子私钥又可以派生出一系列孙私钥。

    它有两大优点:

    • 树状结构可以用来表达额外的组织含义
    • 它可以让用户去创建一系列公钥而无须知晓相对应的私钥,这样HD钱包可在安全性不高的服务器中使用或作为收款专用,为每笔交易提供不同的公钥。公钥不需要被预先加载或者派生,同时在服务器上也没有可用于支付的私钥

    图3

    种子和助记词

    将16进制表示的种子编码成一组标准化的英文单词,这样更方便抄录,也可在不同钱包之间转移,导出和导入,会更方便。这些英文单词称为助记词。

    图4

    比特币钱包的最佳实践

    图5

    助记词编码标准(BIP-39)

    助记词编码是表示确定性钱包的随机数种子的英语单词序列。助记词足以创建种子,并从种子那里重新创建钱包和所有派生的私钥。由助记词编码实现的的确定性钱包应用程序会在首次创建钱包时向用户显示12~24个单词。该序列的单词就是钱包的备份,可用于在相同或任何兼容的钱包应用中恢复和重新创建所有私钥。与随机数子序列相比,助记词使用户备份钱包更加容易,因为他们易于阅读和正确转录。

    注:助记词与脑钱包是不同的。二者的主要区别在于脑钱包由用户选择的单词组成,而助记词是由钱包随机创建并展示给用户的。

    种子和助记词的创建

    图6
    图7
    图8

    • (7)PBKDF2密钥延伸函数的第一个参数是从步骤6生成的助记词
    • (8)PBKDF2密钥延伸函数的第二个参数是盐,由固定的字符串“mnemonic”与可选的用户输入的密码字符串连接组成。
    • (9)PBKDF2将助记词和盐作为参数,调用2048次HMAC-SHA512散列算法,生成一个512位的值作为其延伸的最终输出,这个512位的值就是种子
    补充说明:PBKDF2是密钥延伸函数。

    图10

    图9

    从种子中创造HD钱包

    HD钱包从单个128位,256位,或512位的随机数根种子中创建。

    图11

    私有子密钥的派生

    图12
    上面所提到的子密钥派生函数,即密钥派生函数,是基于单向散列函数的!!!

    链码是用来给这个确定性过程引入随机数据的,以便知道索引编号和子私钥也不足以派生出其他子私钥。因此,有了子密钥并不能让它派生出自己的兄弟姐妹私钥,除非再获得链码。初始链码种子(在书的根部)是用根种子生成的,而后续的链码从各自的父链码中派生出来。

    扩展密钥

    正如我们之前所看到的,只需要三个输入量:一个私钥,一个链码以及想要的子私钥的索引号,私钥派生函数就可以创建私钥树上任意任何层级的子私钥。将私钥以及链码这两个重要的部分组合在一起,称为扩展密钥

    扩展密钥可以简单的表示为将256位私钥与256位链码串联成512位序列并存储。实际上有两种类型的扩展密钥:

    • 私钥以及链码组成扩展私钥,它可用来派生子私钥
    • 公钥以及链码组成扩展公钥,它可用来派生子公钥

    将扩展密钥视为HD钱包中私钥树结构的一个分支的根。利用分支的根可以派生出这个分支的剩余部分。扩展私钥可以创建一个完整的分支,而扩展公钥只能够创建一个包含公钥的分支。

    子公钥派生

    图13
    图14

    子私钥的强派生

    图15
    图16

    展开全文
  • 当我们希望在Php开发的网站中加入比特币支付功能时,需要解决的第一个 问题,就是如何在Php程序代码中调用比特币钱包的RPC API开发接口来实现 我们期望的功能,例如比特币的支付与接收。例如,当我们希望在Php代码中...

    当我们希望在Php开发的网站中加入比特币支付功能时,需要解决的第一个 问题,就是如何在Php程序代码中调用比特币钱包的RPC API开发接口来实现 我们期望的功能,例如比特币的支付与接收。

    例如,当我们希望在Php代码中给某个比特币地址发送以太币时,可以使用 sendtoaddress 这个RPC接口,可以传入以下参数:

    ToAddress:接收地址

    Amount:发送的比特币数量

    Comment:备注文本

    CommentTo:备注接收人

    AutoFeeSubtract:是否自动扣除手续费,默认值:false

    上面的参数中,只有ToAddress和Amount是必须的。当调用完成时, 将返回该笔交易对应的ID。

    下面的代码使用GuzzleHttp来调用sendtoaddress接口向指定的地址发送 0.12个比特币:

    require('../vendor/autoload.php');

    use GuzzleHttp\Client;

    $client = new Client();

    $opts = [

    'json' => [

    'jsonrpc' => '1.0',

    'method' => 'sendtoaddress',

    'params' => ['1LeiqzD6jCwPcdNNAPiT8ayKgdHJMP2EpZ',0.12],

    'id' => time()

    ]

    ];

    $rsp = $client->post('http://user:pass@localhost:8332',$opts);

    echo $rsp->getBody() . PHP_EOL;

    复制代码

    上面的代码假设你的比特币钱包在本机的8332端口监听RPC调用请求,这也是 比特币钱包默认的监听端口。

    比特币钱包提供了非常丰富的RPC接口,我们可以在Php代码中非常轻松 地加入对比特币支付的支持。如果你希望快速掌握在自己的Php网站集成对 比特币的支持,可以访问我们提供的在线互动教程: Php比特币开发详解。

    展开全文
  • 比特币钱包私钥In the previous article, we looked at different methods to generate a private key. Whatever method you choose, you’ll end up with 32 bytes of data. Here’s the one that we got at the ...
  • 破解比特币钱包私匙可行性

    千次阅读 2021-08-03 17:46:23
    今天在tron开发群里看到...虽然理论上可能性很小,但是不排除有这种可能性发生,随后博主查阅了相关资料,发现还真的有人专门去破解比特币钱包。 其实说到底还是通过算法进行暴力破解,有时间了我也去试试。。。 ...
  • 比特币原理入门之四:比特币钱包

    千次阅读 2018-02-10 21:56:58
    在上个文章中,我们了解了比特币的私钥和地址。今天我们在以上基础上,讲讲钱包...所以,比特币钱包其实就是一个软件,它其中的一个重要功能就是管理私钥和地址。 那么,钱包是如何管理私钥和地址的呢?我们在上个...
  • 描述:bitcoincore如何备份和恢复钱包 步骤: 备份钱包,找到bitcoincore安装目录,取出wallet.bat文件保存好 恢复钱包,找到bitcoincore安装目录,将wallet.bat备份文件替换
  • 新手如何选择比特币钱包
  • 开发比特币钱包App

    千次阅读 2018-10-03 07:25:00
    尽管目前加密货币市场相当黯淡,但比特币和其他...因此,如果你是一名希望在这个新市场上赚钱的开发人员,那么你只有一个基本问题需要回答——你如何开发比特币钱包应用程序? 在本文中,我的目的是概述如何创建...
  • 如何创建一个比特币钱包. 如何读取比特币钱包的余额. 如何支付比特币并即时确认. 如何将Mixin Network的比特币提现到你的冷钱包或第三方交易所. 前期准备:你要有一个Mixin Network账户。下面的代码创建一个帐号,...
  • 比特币钱包ui .sketch素材下载
  • 比特币怎么比特币钱包Despite their names, Bitcoin Cash, Bitcoin Gold, Bitcoin Diamond, Bitcoin Private, and others are not the same thing as Bitcoin. They’re based on Bitcoin, and are piggybacking on ...
  • 比特币钱包和挖矿

    千次阅读 2019-01-26 13:40:56
    比特币钱包及挖矿 比特币官方钱包 比特币地址生成 钱包私钥的格式 WIF SPV 验证机制 生成自己的私钥和地址 bitcoin 的官方钱包 钱包官方网站 https://bitcoin.org/zh_CN/choose-your-wallet 运行比特币测试...
  • 如何创建一个比特币钱包. 如何读取比特币钱包的余额. 如何支付比特币并即时确认. 如何将Mixin Network的比特币提现到你的冷钱包或第三方交易所. 前期准备:你要有一个Mixin Network账户。下面的代码创建一个帐号,...
  • 如何创建一个比特币钱包. 如何读取比特币钱包的余额. 如何支付比特币并即时确认. 如何将Mixin Network的比特币提现到你的冷钱包或第三方交易所. 通过Mixin Network PHP SDK创建一个比特币钱包 前期准备:你要有一个...
  • Burundi Librestez54解决方案中心资源新闻通讯云存储提供商商业VoIP服务提供商Internet速度测试呼叫中心提供商主页浏览Saturnrem比特币钱包代码Saturnrem比特币钱包计划由以下人员提供给您:blibrestez55摘要文件...
  • 怎样选择和创建比特币钱包

    千次阅读 2018-02-26 14:44:06
    比特币钱包的选择 现在比特币可选择的钱包实在太多了,多到老韭菜都完全蒙圈。实际上,对刚入门的新手来说,其实不需要有太多选择。既然是新手,首要考虑的就是安全问题。 关于比特币丢失的事例屡见不鲜,而且...
  • 比特币钱包rpc

    千次阅读 2019-04-28 11:22:00
    bitcoind是最常用的比特币钱包比特币钱包通过rpc提供了一组api,可供外部程序来操作比特币钱包,例如创建地址、查询余额或者向其他地址转账。例如,比特币rpc命令行工具bitcoin-cli就是利用比特币钱包的api来实现...
  • 比特币钱包和账户观察者 和 跑步 $ npm install pm2 -g $ pm2 start app.js 技术(MEAN堆栈): | | | 演示版 http://nodedallas.io/apps/web/ | http://nodedallas.io/apps/dash/ 冲刺追踪| 特雷洛 ...
  • 收发比特币一般都直接使用钱包软件。在了解了比特币系统和钱包的工作细节后,这篇文章将介绍: 选择和使用钱包软件时需要注意什么 如何安全的生成助记词 使用热钱包在日常生活中收发比特币 使用冷钱包和观察钱包来...
  • 当我们希望在Php开发的网站中加入比特币支付功能时,需要解决的第一个 问题,就是如何在Php程序代码中调用比特币钱包的RPC API开发接口来实现 我们期望的功能,例如比特币的支付与接收。例如,当我们希望在Php代码中...
  • 比特币钱包设计简单原理

    万次阅读 2021-11-20 20:23:46
    * \* Description:钱包设计 * \ */ @Data public class Wallet implements Serializable { private static final long serialVersionUID = -7848786859278946662L; private String address;
  • 比特币钱包创建及地址获取

    千次阅读 2019-12-05 19:48:31
    比特币钱包开发中,需要搭建比特币节点来同步交易数据等,并完成转账余额查询等相关操作。本文介绍了比特币节点搭建好之后,在节点服务器上,如何创建账户,如何获取地址的。 比特币的账号是通过bip协议生成种子,...
  • 如何注册比特币钱包.docx
  • 我们学完了Base64,把一个钱包地址打印出来会发现很多字符混乱不清。比如O,0,o,L,l,I,i等字符去掉,转化为Base58的编码方式。 如下图: 所以我们不能在用Base16,Base64等算法应用与Base58的编解码方式中。 ...
  • 描述:bitcoincore比特币钱包使用私钥导入钱包地址 步骤: 菜单栏->窗口->控制台 执行命令 walletpassphrase 钱包密码 暂时解封秒数 #如果钱包有密码,需要先解封钱包 importprivkey 地址私钥 地址别名 true...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,313
精华内容 7,725
关键字:

比特币钱包

友情链接: FCM能运行代码.rar