比特币多个输入地址吗
Ⅰ 入门科普:比特币的私钥、公钥和地址是什么
上一篇,我们讲到了币圈要注意防范传销、洗钱等一类的骗局,保护好自己的资产。这一篇,我要告诉大家,进行比特币交易时,都会用到的私钥、公钥与地址,如果你还不了解它们的重要性,随便交易,很容易弄丢自己的资产。那什么是私钥、公钥与地址?三者之间有着什么样的关系呢?
01
私钥
1.导出:
创建钱包后,输入密码可以导出私钥,私钥由很长的字符串组成,且是随机生成的, 一个地址只有一个私钥。
2.用途:
用于控制交易时的签名,拥有私钥才能控制账户的资金,相当于银行账户的交易密码,用来解密公钥加密的信息。
3.注意事项:
私钥是用来证明这笔交易的发起人确实是比特币的所有者。所以 私钥一定不能曝光,私钥一旦泄露,你的比特币将会有被盗的风险。 用户必须保管好私钥,防止泄露或丢失。
02
公钥
1.导出:
公钥是由私钥通过算法生成的,使用了椭圆曲线加密, 通过私钥可以计算出唯一的公钥。
2.用途:
公钥是用来验证交易的签名,一个私钥签名的数据,只有对应的公钥才能对其进行验证,公钥相当于银行账户,公开后无风险。
03
地址
1.导出:
地址由公钥生成的,使用了哈希运算。创建钱包后会生成一个以“0x” 开头的 42 位字符串,这个字符串就是钱包地址,一个钱包对应一个钱包地址, 地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的。
2.用途:
由于公钥太长,在交易中不方便使用,所以就有了地址,地址是由公钥生成的,地址相当于银行卡号,用来发送和接收比特币。
3.注意事项:
平台上不同代币的转账收款地址一般都不同,因此,转币到交易平台前一定要确认好地址。
总结
私钥 → 公钥 → 钱包地址 (不可逆)
私钥用来签名交易,公钥用来验证私钥签名的交易,地址用来收款。
公钥、私钥以及地址都在比特币交易中起到了不同的作用,所以才能顺利的完成一笔数字货币的交易。 所以用户必须好好保存,防止泄露重要信息。
Ⅱ 怎样查看比特币钱包私钥
比特币钱包私钥在线无法查看,比特币存在平台要下载core 或者classic才是真正的钱包,然后就可以查看了。
【比特币钱包私钥的说明】:
1、钱包加密是指对储存有私钥的钱包进行自动加密存储。 比特币官方客户端从0.4.0 版本开始支持钱包加密。加密的钱包在每次付款的时候,都会提示您输入密码。如果密码错误,客户端会拒绝付款。
2、如果用最早备份的钱包(wallet.dat)替换回来,还是一样可以正常交易。考虑到比特币的原理应该也可得出,只要有私钥(钱包)存在,就可以证明你是这个钱包的合法拥有者,不管对这个钱包(核心就是某个地址对应的私钥)是进行了加密还是删除,都不能否定它。
3、备份比特币钱包时,还需注意由于比特币支付找零机制的存在(比如把一个完整的100 btc中的50 btc发送给某个地址,系统会发送其中的50 btc到对方的地址,并退回50 btc到你客户端的一个新地址上,这个地址不会直接显示在你的地址列表中)。
4、每发送了100次比特币给其它地址或者使用了100个不同的地址接收比特币后,请重新备份钱包,否则后面交易退回的和接收到的比特币会永久丢失。 除了给钱包加密外,用户还可以自行生成离线的纸钱包和脑钱包。
Ⅲ 比特币系统规定要几个个体确认后才算交易完成呢
6个区块确认。
解释:
A君给B君转1个比特币,除了要输入交易金额1个比特币外,还需要设置一定量的矿工费,在输入秘钥并点击发送之后,需等待交易打包和6个区块确认,才能完成这笔转账,而这个过程大概需要花费30分钟~1小时。
比特币网络上有很多节点,假设B和C节点在短时间差内都计算出工作量证明解,然后把自己挖到的区块传播到网络中,先传播给邻近节点,而后传播到整个网络。
B和C矿工的区块数据是不一样的,但都是正确的,因此在这一刻出现了两个都满足要求的不同区块,B和C附近进的D、E、F等等矿工在监听到这个两个区块时,是有先后顺序区别的。怎么办,先入为主,节点把先监听的区块复制过来,然后开启新区块的挖矿工作。
那这个时候不同节点,同时有不同版本的区块链,而这两个版本的区块链,都被矿工们继续开采。但是两个版本的区块链其增长速是不一样的,总有一条链的长度要超过另一条链。当D、E、F等等矿工发现全网络中有一个条更长链的时候,他们会抛弃当前较短的链,转到更长链上进行挖矿。而那些被矿工成功挖掘的块,因为不是在最长链上而被抛弃了,他们叫过时块。这些过时块中的数据,又需要等待重新被写入区块中。
当一笔交易获得6个区块确认后,从而以确认该交易是在最长分支的区块链里,不可篡改,然后才能够花费小星转他的比特币。
(3)比特币多个输入地址吗扩展阅读
比特币交易确认过程
(1)钱包创建交易
钱包软件通过收集UTXO、 提供正确的解锁脚本、 构造支付给接收者的输出这一系列的方式来创建交易。 产生的交易随后将被发送到比特币网络临近的节点, 从而使得该交易能够在整个比特币网络中传播。
(2)交易独立效验
每一个收到交易的比特币节点将会首先验证该交易,有效的交易将被传递到临近的节点,这将确保只有有效的交易才会在网络中传播, 而无效的交易将会在第一个节点处就被废弃。
验证的交易添加到交易地:验证交易后, 比特币节点会将这些交易添加到自己的交易池, 用来暂存尚未被加入到区块的交易记录。
(3)节点确认交易
假设有个比特币网络节点A,其收集到了区块277,314。接下来A节点做两件事:1.尝试挖掘新区块;2.监听其他节点是否挖出新的区块。 如果A节点监听到了区块277315,则标志着277,315区块竞争结束。与此同时开启区块277,316的竞赛。
A节点在接收并验证区块277,315后,会检查内存池中的全部交易, 移除已经在区块277,315中出现过的交易记录,确保任何留在内存池中的交易都是未确认的,等待被记录到新区块中,而被移除的交易记录获得一次确认交易。把包含在区块内且被添加到区块链上的交易称为确认交易。
Ⅳ 比特币交易构成 你知道多少
交易类型
产量交易(Generation)
每个Block都对应一个产量交易(Generation TX),该类交易是没有输入交易的,挖出的新币是所有币的源头。
合成地址交易(Script Hash)
该类交易的接收地址不是通常意义的地址,而是一个合成地址,以3开头,需要几对公私钥一起生成合成地址,在生成过程中可以指定,几对公私钥中的几个签名以后,就可以消费该地址的比特币。
通用地址交易(Pubkey Hash)
该类是最常见的交易类型,由N个输入、M个输出构成。
输入和输出可以御桥旦简单的理解成,发出币的地址就是输入,收到币的地址就是输出。
数据结构
字镇扰段
数据类型
字段大小
字段描述
versionuint32_t
4交易数据结构的版本号tx_in countvar_int1+输入交易的数量tx_intx_in[]41+输入交易的数组,每个输入=41字节
tx_out countvar_int1+输出地址的数量tx_outtx_out[]9+输入地址的数组,每个输入=9字节lock_timeuint32_t4
lock_time是一个多意字段,表示在某个高度的Block之前或某个时间点之前该交易处于锁消慎定态,无法收录进Block。
值
含义
0立即生效 500000000含义为Block高度,处于该Block之前为锁定(不生效)= 500000000含义为Unix时间戳,处于该时刻之前为锁定(不生效)
若该笔交易的所有输入交易的sequence字段,均为INT32最大值(0xffffffff),则忽略lock_time字段。否则,该交易在未达到Block高度或达到某个时刻之前,是不会被收录进Block中的。
示例
为了演示方便,我们读取稍早期的块数据,以高度116219 Block为例。
# ~ bitcoind getblock
{
hash : ,
confirmations : 144667,
size : 1536,
height : 116219,
version : 1,
merkleroot : ,
tx : [
,
,
,
,
],
time : 1301705313,
nonce : 1826107553,
bits : 1b00f339,
difficulty : 68977.78463021,
previousblockhash : ,
nextblockhash :
}
该Block里面有5笔交易,第一笔为Generation TX,解析出来看一下具体内容:
# ~ bitcoind getrawtransaction 1
{
hex : ,
txid : ,
version : 1,
locktime : 0,
vin : [
{
coinbase : 0439f3001b0134,
sequence : 4294967295
}
],
vout : [
{
value : 50.01000000,
n : 0,
scriptPubKey : {
asm : OP_CHECKSIG,
hex : 41ac,
reqSigs : 1,
type : pubkey,
addresses : [
]
}
}
],
blockhash : ,
confirmations : 145029,
time : 1301705313,
blocktime : 1301705313
}
Generation TX的输入不是一个交易,而带有coinbase字段的结构。该字段的值由挖出此Block的人填写,这是一种“特权”:可以把信息写入货币系统(大家很喜欢用系统中的数据结构字段名来命名站点,例如blockchain、coinbase等,这些词的各种后缀域名都被抢注一空)。中本聪在比特币的第一个交易中的写入的coinbase值是:
coinbase:722062616e6b731
将该段16进制转换为ASCII字符,就是那段著名的创世块留言:
The Times 03/Jan/2009 Chancellor on brink of second lout for banks1
接下来展示的是一个三个输入、两个输出的普通交易:
# ~ bitcoind getrawtransaction 1
{
hex : ,
txid : ,
version : 1,
locktime : 0,
vin : [
{
txid : ,
vout : 0,
scriptSig : {
asm : 01 ,
hex :
},
sequence : 4294967295
},
{
txid : ,
vout : 1,
scriptSig : {
asm : 01 ,
hex :
},
sequence : 4294967295
},
{
txid : ,
vout : 1,
scriptSig : {
asm : 1d01 ,
hex :
},
sequence : 4294967295
}
],
vout : [
{
value : 0.84000000,
n : 0,
scriptPubKey : {
asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,
hex : 76a91488ac,
reqSigs : 1,
type : pubkeyhash,
addresses : [
]
}
},
{
value : 156.83000000,
n : 1,
scriptPubKey : {
asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,
hex : 76a91488ac,
reqSigs : 1,
type : pubkeyhash,
addresses : [
]
}
}
],
blockhash : ,
confirmations : 147751,
time : 1301705313,
blocktime : 1301705313
}5859606162636465666768
字段hex记录了所有相关信息,后面显示的是hex解析出来的各类字段信息。下面把逐个分解hex内容(hex可以从上面的直接看到):
01000000 // 版本号,UINT32
03 // Tx输入数量,变长INT。3个输入。
/*** 第一组Input Tx ***/
// Tx Hash,固定32字节
00000000 // 消费的Tx位于前向交易输出的第0个,UINT32,固定4字节
8a // 签名的长度, 0x8A = 138字节
// 138字节长度的签名,含有两个部分:公钥+签名
47 // 签名长度,0x47 = 71字节
01
41 // 公钥长度,0x41 = 65字节
ffffffff // sequence,0xffffffff = 4294967295, UINT32, 固定4字节
/*** 第二组Input Tx。与上同理,省略分解 ***/
ffff
/*** 第三组Input Tx ***/
2fffffffff
02 // Tx输出数量,变长INT。两个输出。
/*** 第一组输出 ***/
00bd010500000000 // 输出的币值,UINT64,8个字节。字节序需翻转,~= 0x000000000501bd00 = 84000000 satoshi
19 // 输出目
Ⅳ 如何挖矿比特币
说起比特币,最近可以火热了。到处互联网都在讨论,甚至在经济学报在也讨论这个神秘的币种,报纸也在讨论可行性,比特币流行在电脑极客中,这些人都是对自由的向往,话说当年中本聪发表论文,到现在比特币已经逐渐火热起来。许多国外的网站甚至购物都已经接受了比特币的付款,国内的比较少。比特币现在的价值比较高,一个比特产就值三百几美刀,值人民币上一千多块,多么吸引人呀,但是它就是一个股票,一下涨一贬。比特产有风险,入行请小心。
今天我就把在比特币探矿的体会和工具写下来,我也是一个新手,跟喜爱比特币的人一同分享一下。
1、先下载你的比特币电子钱包,网络一下Bitcoin客户端就有,不用注册的,它是默认绑定你的电脑的,下载安装好,它就会更你的网络数据块,这个够坑爹,听说是下载所有网络节点的信息,是全世界的,这该有多大,我更新了好几天都下载完数据块。
Bitcoin客户端界面:
2.界面还是比较简单的,有了这个客户端,你这可以实现比特币的付款和收款了。点下图圈圈处就可以看到下方有一串的数字和字母的字符串,你可以把这串东东复制下来,发给别人,相等你把银行卡帐号给别人,别人就可以付款了,你点“发送货币”,把别人发来的帐号粘贴下就可以轻松给对方付款比特币,这个过程完全没有第三方的存在,所以安全放心。
3.介绍一下如何挖矿,也是比特币产生的重要方式。挖矿工具是guiminer,它是个绿色包,也就文件夹,不用安全,下载下来直接解压就可以用了,找到下方图标,双击运行。
界面:
4.有了工具就要用到,就要找到一个好地方生产矿产,也是就是矿池,在现在比特币产量越来越少了,如果个人挖不知何年何月才挖得出比特币来,如果你是银河系列超级计算机就另谈,个人电脑可以忽略掉,矿池有很多,但号称比特币全球最大矿池deepbit,它是网址是
https://deepbit.net/ 登陆网站注册帐号。点我的帐户
5、进入我的帐户信息,这里看到你的矿工信息,帐户有多少比特币的分成,c贡献
6、我的帐户的具体设置。
1、<你的比特币地址,用来接收报酬:>在框里内输入你接受比特币的地址,不要写错了,不然就白挖矿了,上面图文说过了。
2、《自动支付最小值:》 自己设置,当你在矿池有这么多钱后,这个网站就会自动把钱打到你的上面设置的比特币帐户地址。你看所以上面设置重要吧
3设置矿工了,点creat new vorker,中文是创建新的矿工,矿工就可以帮你的挖矿的工人,你可以设置多个,然后在很多电脑一块开挖,效果更明显,收入更丰厚
名称上就随便写,要写英文,外国的东西最好写英文。
密码自己写,不要写得长,简单就行了重要性不大
失败检测阀值 (1-3600 分钟): 写上60就行了,
当矿工不工作时发送邮件通知?* :果断不选,拒绝垃圾邮件,
矿工支付方式:果断选按比例拉,多劳多得,这才是符合人类发展。
最后点 sava setting ,就可以保存你的矿工了,返回可以看到你矿工的信息。
7.把矿工信息填入到挖矿工具guiminer,
file->new opencl miner->填入你喜爱的名字-》sever处选择deepbit-》username填入矿工的,记得要连你的注册帐号一起形式的你的邮箱加矿工,上面有,密码你懂的,device 是选择你用什么硬件来工作,一般是用显卡来的,选择你要用的显卡,如果找不到,记得更新一下显卡驱动就可以用了,然后start mining了.就可以坐等收矿了。具体速度要看你电脑配置。
注:矿池还有许多的,工具也有,具体我就不介绍了,只因为我是用我上面的说,谁用谁知道,用了才有发言处,其它的我可能不懂。小心的电费都不够本,如果真的有了就可以上中国比特币网买卖比特币,把它换的真金,对不。
Ⅵ 比特币机制研究
现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。
假设网络中有A, B ,C三个人。
A付给B 1比特币 ,B付给C 2比特币 ,C付给A 3比特币 。
如下图所示:
为了刺激比特币系统中的用户进行记账,记账是有奖励的。奖励来源主要有两方面:
比特币中每一笔交易都会有手续费,手续费会给记账者
记账会有打包区块的奖励,中本聪在08年设计的方案是: 每10分钟打一个包,每打一个包奖励50个比特币,每4年单次打包的奖励数减半,即4年后每打一个包奖励25个比特币,再过四年后就奖励12.5个比特币... 这样我们其实可以算出比特币的总量:
要说明打包的记录以谁为准的问题,我们需要引入一个知名的 拜占庭将军问题 (Byzantine failures)。拜占庭将军问题是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
假设有9个互相远离的将军包围了拜占庭帝国,除非有5个及以上的将军一起攻打,拜占庭帝国才能被打下来。而这9个将军之间是互不信任的,他们并不知道这其中是否有叛徒,那么如何通过远距离协商来让他们赢取战斗呢?
口头协议有3个默认规则:
1.每个信息都能够被准确接收
2.接收者知道是谁发送给他的
3.谁没有发送消息大家都知道
4.接受者不知道转发信息的转发者是谁
将军们遵循口头规则的话,那就是下面的场景:将军1对其他8个将军发送了信息,然后将军2~9将消息进行转达(广播),每个将军都是消息的接受者和转发者,这样一轮下来,总共就会有9×8=72次发送。这样将军就可以根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要大部分将军同意攻打拜占庭,自己就去行动。
这个方案有很多缺点:
1.首先是发送量大,9个将军之间要发送72次,随着节点数的增加,工作量呈现几何增长。
2.再者是无法找出谁是叛徒,因为是口头协议,接受者不知道转发信息的转发者是谁,每个将军手里的数据仅仅只是一个数量的对比:
这里我们假设有3个叛徒,在一种最极端的情况下即叛徒转发信息时总是篡改为“不进攻”,那么我们最坏的结果就如上图所示。将军1根据手里的信息可以推出要进攻的结论,却无法获知将军里面谁是叛徒。
这样我们就有了方案二:书面协议。
书面协议即将军在接受到信息后可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。一旦发现有人所给出的信息不一致,就是追查间谍。
有了书面协议,那么将军1手里的信息就是这样的:
可以很明显得看出,在最坏的一种情况——叛徒总是转发“不进攻”的消息之下,将军7、8、9是团队里的叛徒。
这个方案解决了口头协议里历史信息不可追溯的问题,但是在发送量方面并没有做到任何改进。
在我们的示例中,比特币系统里的每个用户发起了一笔交易,都会通过自己的私钥进行签名,用数学公式表示就是:
所以之前的区块就变成了这样:
这样每一笔交易都由交易发起者通过私钥进行数字签名,由于私钥是不公开的,所以交易信息也就无法被伪造了。
如书面协议末尾所说的那样,书面协议未能解决信息交流过多的问题。当比特币系统中存在上千万节点的时候,如果要互相广播验证,请求响应的次数那将是一个非常庞大的数字,显然势必会造成网络拥堵、节点处理变慢。为了解决这个问题,中本聪干脆让整个10分钟出一个区块,这个区块由谁来打包发出呢?这里就采用了工作量证明机制(PoW)。工作量证明,说白了就是解一个数学题,谁先解出来数学题,谁就能有打包区块的权力。换在拜占庭将军的例子中就是,谁先做出数学题,谁就成为将军们里面的总司令,其他将军听从他发号的命令。
首先,矿工会将区块头所占用的128字节的字符串进行两次sha256求值,即:
这样求得一个值Hash,将其与目标值相比对,如果符合条件,则视为工作量证明成功。
工作量证明成功的条件写在了区块链头部的 难度数 字段,它要求了最后进行两次sha256运算的Hash值必须小于定下的目标值;如果不是的话,那就改变区块头的 随机数 (nonce),通过一次次地重复计算检验,直到符合条件为止。
此外, 比特币有自己的一套难度控制系统,使得比特币系统要在全网不同的算力条件下,都保持10分钟生成一个区块的速率。这也就意味着:难度值必须根据全网算力的变化进行调整。难度调整的策略是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。
PoW其实在比特币中是做了以下的三件事情。
这样可以防止一台高性能机器同时跑上万个节点,因为每完成一个工作都要有足够的算力。
有经济奖励就会加速整个系统的去中心化,也鼓励大家不要去作恶,要积极地按照协议本来的执行方式去执行。(所以说,无币区块链其实是不可行的,无币区块链一定导致中心化。)
也就是说,每个节点都不能以自身硬件条件去控制出快速度。现在的比特币上平均10分钟出一个块,性能再好的机器也无法打破这个规则,这就能够保证 区块链是可以收敛到共同的主链上的 ,也就是我们所说的共识。
综上,共识只是PoW三个作用中的一点,事实上PoW设计的作用有点至少有这么三种。
默克尔树的概念其实很简单,如图所示
这样,我们区块的结构就大致完整了,这里分成了区块头和区块体两部分。
区块链的每个节点,都保存着区块链从创世到现在的每一区块,即每一笔交易都被保存在节点上,现在已经有几百个GB了。
每当比特币系统中有一笔新的交易生成,就会将新交易广播到所有的节点。每个节点都把新交易收集起来,并生成对应的默克尔根,拼接完区块头后,就开始调整区块头里的随机数值,然后就开始算数学题
将算出的result和网络中的目标值进行比对,如果是结果是小于的话,就全网广播答案。其他矿工收到了这个信息后,就会立马放下手里的运算,开始下一个区块的计算。
举个例子,当前A节点在挖38936个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第38936个区块(前一个区块为38935)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
整个流程就像下一张图所展示的这样:
简单来说,双花问题是一笔钱重复花了两次。具体来讲,双花问题可分为两种情况:
1.同一笔钱被多次使用;
2.一笔钱只被使用过一次,但是通过黑客攻击或造假等方式,将这笔钱复制了一份,再次使用。
在我们生活的数字系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,为了解决双花问题,日常生活中是依赖于第三方的信任机构的。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO、时间戳等技术的整合来解决双花问题。
UTXO的英文全称是 unspent transaction outputs ,意为 未使用的交易输出 。UTXO是一种有别于传统记账方式的新的记账模型。
银行里传统的记账方式是基于账户的,主要是记录某个用户的账户余额。而UTXO的交易方式,是基于交易本身的,甚至没有账户的概念。在UTXO的记账机制里,除了货币发行外,所有的资金来源都必须来自于前面某一个或几个交易。任何一笔的交易总量必须等于交易输出总量。UTXO的记账机制使得比特币网络中的每一笔转账,都能够追溯到它前面一笔交易。
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
以Alice向Bob进行转账的过程举例的话:
UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计正可以看成是借鉴了现金的思路:我们可能在这个口袋里装点现金,在那个柜子角落里放点现金,在这种情况下不存在一个账户,你放在各处的现金加起来就是你所有的钱。
采用 UTXO 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:
Ⅶ 比特币交易怎么交易费怎么算
交易手续费怎么算,可参考以下内容。
1、一般一个普通的比特币交易由一个输入和两个输出(交易输出和变更输出)组成,约200字节。如果默认收费是每1000字节0、0001个比特币,那么一个比特币转账的手续费大概是0、001-0、002个比特币。然而,当单个输入不足以支付输出时,就会出现上述多个事务输入构成未用输出的问题,进而其数据量会变大。但是,未使用的事务输出的组成越复杂,需要处理的字节就越多,处理费用就越高。
2、在比特币的基础协议中,没有规定比特币交易手续费的具体金额,但要求在地址中输入的总额不小于总产出,即你钱包中的比特币总额必须大于转账金额和手续费金额之和。这一点很好理解。你只有10块钱,转账10块钱要收1块钱手续费,也就是说你要花11块钱,10-11=-1,所以这笔交易自然不能完成。
3、比特币交易费用由交易数据大小、交易次数等因素决定。比特币遵循UTXO模型,每个交易包含若干个交易输入和交易输出。事实上,每个未使用的事务输出的组成取决于您的事务输入。当您需要将一个比特币转移到另一个地址时,在您的交易输入中可能包含五个0、2比特币或十个0、1比特币。
Ⅷ 【区块链】什么是比特币地址
比特币地址是一串由字母和数字组成的26位到34位字符串,看起来有些像乱码。但它就是你个人的比特币账户,相当于你的银行卡卡号,任何人都可以通过你的比特币地址给你转账比特币。
它与比特币私钥不同,不会因为信息泄露而造成比特币丢失,因此你可以将比特币地址放心的告诉任何人。
通过区块链浏览器可以查看每个比特币地址所有的转账交易记录。
常用的比特币区块链浏览器有:
https://btc.com/block
https://www.blockchain.com/zh-cn/explorer
我们常用的比特币地址格式一般有如下四种。
1、BASE58格式
BASE58格式是人们常见的比特币地址格式,一般由1开头的。
例如:
2、HASH160格式
HASH160格式为RIPEMD160算法对130位公钥的SHA256签名进行计算得出的结果 。
例如:
3、WIF压缩格式
WIF压缩格式即钱包输入格式,是将BASE58格式进行压缩后的结果130位公钥格式 这是最原始的由ECDSA算法计算出来的比特币公钥。
例如:
4、60位公钥格式
60位公钥格式即130位公钥进行压缩后得出的结果。
例如:
比特币是建立在数学加密学基础上的,中本聪大神用了椭圆加密算法(ECDSA)来产生比特币的私钥和公钥。
由私钥是可以计算出公钥的,公钥的值经过一系列数字签名运算会得到比特币地址。
比特币地址是由算法随机生成,那么就会有人问,既然都是随机生成的,那么比特币的地址会不会重复呢?关于这个问题,想必就更不用担心。
因为比特币的私钥长度是256位的二进制串,那么随机生成的两个私钥正好重复的的概率是2 ^ 256 ≈ 10 ^ 77之一,这个数字大到你根本无法想象,比中彩票的概率还要小好多;所以不用担心的啦,每个人的比特币地址都是独一无二的。