一、什么是utxo区块链
区块链的核心技术是什么?
简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有100台计算机分布在世界各地,这100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币P2P网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求Peer节点的地址数据以及区块数据。
这套P2P交互协议也具有自己的指令集合,指令体现在在消息头(MessageHeader)的命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的PeerDiscovery的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有Raft和Paxos算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了Paxos和Raft为主的分布式系统。
而在区块链领域,多采用PoW工作量证明算法、PoS权益证明算法,以及DPoS代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS:这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS:简单来理解就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多PoW币种赖以存在的基础,在比特币中,SHA256算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到Scrypt算法,该算法与SHA256不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于SHA3算法的挖矿算法。以太坊使用了Dagger-Hashimoto算法的改良版本,并命名为Ethash,这是一个IO难解性的算法。
当然,除了挖矿算法,我们还会使用到RIPEMD160算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链Token系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是ECDSA。ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有NoSQL的BerkelyDB、LevelDB,也有一些币种采用基于SQL的SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为UTXO结构以及基于Accout-Balance结构的账本结构,我们也称为账本模型。UTXO是“unspenttransactioninput/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中Token转移的一种记账模式,每次转移均以输入输出的形式出现;而在Balance结构中,是没有这个模式的。
数字货币里的UTXO什么意思?UTXO的中文意思叫作:未花费的交易输出。
UTXO是数字货币中的账户模型,这个模型和我们现在银行的账户模型是不一样的。
拿转账来说,现在的情况是:
我要给依依转2000块钱,我要从我的招商银行卡里面给她转账,我的卡里面有5000块钱,转给她2000块钱以后,我的招商银行账户就被扣除了2000块钱,还剩下3000块钱。
那么如果是基于比特币的UTXO,情况是这样的:
我有5000比特币,我给依依转2000比特币,2000比特币消耗掉了对不对?注意!这2000不是从我这5000总数里面扣除的,而是:我的比特币总额会分成两份(一份
2000,一份3000),这就是所谓“生成两个新的UTXO”:依依收下2000比特币,我自己收下3000比特币,3000算是给我的找零。
转账成功以后,我给依依的2000比特币目前已经使用过了,被消耗掉了,就不能再叫UTXO了,而找零给我的3000比特币目前我还没有使用,所以它还能称作UTXO,也就是未花费的交易输出。那么,如果我总共有5000比特币,我全部转给依依,那么就只需要生成一个新的
UTXO给依依就可以了,不需要找零了。
基于UTXO,每笔交易出现,都要确认比特币之前的情况,检验比特币是不是存在于我的UTXO中,如果不存在,那么系统就会拒绝你的交易行为。
这样一来,每笔交易的输入和输出都是有关系的,可以通过UTXO不断向前追溯,一直追溯到比特币诞生的时候,也就是挖矿的源头。
如果我想用同一笔UTXO发送给两个人,那么系统只确认先接受到的那一笔,一旦确认UTXO已经被消耗了,那么你就不可以再把它转给下一个人,这样就避免了双重支付的问题。
既然系统只确认先接受到的那一笔,那么问题来了,系统怎么知道谁先谁后呢?系统当然知道,因为系统有一个叫“时间戳”的东西。
什么是区块链?不是比特币进化慢,而是我们进化慢
自从区块链(blockchain)这个词被从比特币中抽象出来之后,整个业内就弥漫着一种奇特的意识形态叙事(ideologicalnarrative)。这个叙事是这样的:比特币是一架又慢又旧的破马车,十几年了没有什么改进,什么炫酷的功能都没有。当然,从人类“无利不起早”的天然本性而言,给你讲这么一通破烂话的人,绝对不是吃饱了撑的无事生非,而通常都会在看到你对手里的大饼(BTC)起了半信半疑之心之后,趁机向你推销他正在兜售的拉风跑车项目。
北京时间11月14号下午13点15分27秒,随着区块高度709632的区块被挖出,比特币自2017年隔离见证升级之后最重要的升级之一,Taproot升级,宣告成功激活(今年6月份就已经获得超90%矿工投票lock-in了,本次激活属于明牌)。
该区块中包含了chainside联合创始人FedericoTenga的一笔V1_P2TR交易。在该笔交易中,Federico在OP_RETURNDATA中附加了一句话:gmtaproot。据信,这是历史上第一笔Taproot交易。为了抢到这个名次,Federico支付了2510sat/vB的矿工费(手续费),这大概是正常矿工费(不到10sat/vB)的5百多倍。[1]
Taproot升级为我们带来了区块扩容、更好的隐私性以及增强的扩展性等诸多好处。这些好处主要是由于两项技术的引入而带来的。其一就是Schnorr签名,而另一个就是MAST(默克尔化的抽象语法树)。
Schnorr签名能够压缩数字签名的尺寸。单签名比ECDSA节省约12%的尺寸,也就可以节省转账手续费。以及,它能够把多签名压缩成一个签名,这可以极大压缩多签地址的尺寸,并保护多签参与者的隐私。据说早在2012年MikeHearn就在bitcointalk论坛提出过类似想法。通过压缩签名尺寸,相当于扩大了区块容量,容纳更多交易量。
MAST则可以大大改善P2SH交易的交易尺寸、隐私性和灵活性。最早的BIP-114提案是由JohnsonLau于2016年提出的。早前的P2SH交易可以允许支付时不揭示script(比特币脚本代码)。但是,当花费UTXO(未花费的交易输出)时,便需要提供script且记录到链上,从而占据区块链的容量。如果script比较复杂,则会占据较多的空间。MAST的引入使得我们可以把包含很多条件的复杂脚本组织成默克尔树。在花费UTXO时,也只需要揭示默克尔证明和涉及的script,而不需要揭示整颗树。这就节省了区块容量,改善了脚本的隐私性。同时,由于打开了script尺寸的限制,这就为比特币的可编程性引入了更大的扩展性和灵活性。
应该说,上面几段话对一些只在中心化交易所炒炒币,甚至连私钥都不懂的朋友来说无异于天书。别说Taproot了,便是4年前的segwit(隔离见证),对很多所谓圈内的人来说都不知何物。这没有什么可耻的。我头一次看这些新技术、新名词也是脑袋爆炸。多学习,多研究,多琢磨琢磨,也就搞明白了。
相比于科技的进步,我们掌握知识的能力进化的实在是太慢了。时至今日,很多人还搞不清楚比特币究竟是存储在自己手机上的钱包里,还是在比特币网络上。自己手机或者电脑上的钱包软件又是起什么作用的。私钥是什么,助记词是什么,所谓的HD钱包又是什么。1开头的地址,3开头的地址,5开头的地址,bc1开头的地址都有啥分别。怎么把大饼从交易所提出来,放到所谓链上。怎么自己掌控自己的比特币。怎么签名转账比特币。怎么使用隔离见证地址。以及现在,如何构建Taproot交易呢?
有人于是说,那就不要让用户自己掌握私钥,远离这些技术细节好了。回到托管式的环境,回到互联网中心化的用户体验。这样一种用户体验的改善,就像中心化交易所一样,是以牺牲用户自主掌握资产为代价的。这直接抛弃了去中心化以来全部的价值观。这又是一种进化,还是一种退化呢?
如果只是为了发明一个噱头,让投机者去炒、去赌,那就尽可以不考虑这些。那就不仅不应该限制OP_RETURN的尺寸,甚至应该扩充script使之支持图灵完备的编程。这样就可以在比特币上发行各种空气币、土狗币,再搞出来各种为炒而生的应用出来,所谓繁荣的生态。但是比特币一路走来,似乎是走了相反的道路。不仅从一开始就极大限制了script的功能,而且主动缩短了OP_RETURN的数据尺寸,限制了在比特币链上玩各种花活儿的可能性。
比特币是审慎的。它清楚自己有更大的使命。Taproot的激活,可能会有利于二层的发展。但是,并不会给一层带来自限性的问题。相反的,它会因为压缩了数据尺寸,而扩大了一层的容量。
比特币是富有耐心的。它肩负着普及去中心化数字货币(而不是在中心化平台上进行投机)的历史任务。所以它必须耐心地等待,等待每一个人跟上技术发展的脚步。
UXTO与余额区块链入门从使用钱包开始,我们最关注的是钱包的账户余额。可看过很多区块链资料以后,一直存在一个疑问,钱包的余额信息存在区块链的什么位置?一直没有找到,只有一个相近的概念叫UTXO(UnspentTransactionOutput),但看完以后还是对应不上。直到翻遍网上所有关于UXTO的资料,才知道在中本聪设计的比特币系统中,并没有余额这个概念,“比特币余额”是由比特币等钱包应用派生出来的产物。钱包的余额是通过与账户相关的多个UXTO算出来的。下面且听我详细道来。
了解过一点点会计学,我们现在的会计系统绝大部分采用的是一种叫做“借贷记账法”的方法,账目分成借方和贷方,每发生一笔业务都要登记两个以上的科目。
简单来说,Alice转账给Bob1美元,使用借贷记账法至少要产生两条账目,Alice账户减少1美元,Bob账户增加1美元。这种记账法在企业经营、企业审计中有无数的好处。但是这种记账法也有一个最大的缺点,就是容易产生记账错误和记账误差。一笔交易需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。
中本聪发明了UTXO(UnspentTransactionOutput)交易模型,并将其应用到比特币当中。UTXO是“未花费的交易输出”,简单来说就是,每一笔比特币交易实际上都是由若干个交易输入和输出组成的。交易输入是资金来源,交易输出是资金去向,每一笔交易都要从交易输入中花费出去一部分,这一部分就是未花费的交易输出(UTXO)。每一次的交易输入都可以追溯到之前的UTXO,直至最初的挖矿所得。
由挖矿所得创建的比特币交易,是每个区块中的首个交易,又称之为coinbase交易,它由矿工创建,没有上一笔交易输出。
在比特币交易中UTXO就是基本单位,一个UTXO一旦被创建就不可被继续分割,它只能当作是下一笔交易的输入被花费掉,花费后产生新的UTXO,这样周而复始地实现货币的价值转移。所以我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚合所有属于该用户的UTXO计算得来的。
因此,当我们在说某人拥有1枚比特币的时候,我们实际上说的是,在当前的区块链记录中,有若干笔交易的UTXO收款地址写的是这个人的钱包地址,这些UTXO的总和是1个比特币。
比特币的UXTO系统遵守两个规则:
我们以以太账户为例,打开etherscan.io,选择BLOCKCHAIN-AllAccounts,这样可以看到所有地址与余额,可以选择其中一个查看详细信息。如果看不懂,没关系,把自己的以太地址输入到右上角的搜索框回车后,会显示地址的余额和详细交易记录,如下图。
至此,我能理解李笑来老师说为什么他的账户没有余额,只有UXTO了,O(∩_∩)O哈哈~,内行人不要说外行话嘛。
二、bitfinex支持什么方式充值
bitfinex支持什么方式充值?
这个操作有点复杂,请耐心按照下面的步骤操作
1、Bitfinex交易平台是由一个在英属维尔京群岛注册的公司 iFinex在运营,公司位于香港,支持比特币和莱特币的做多做空杠杆交易,交易采用Maker-Taker机制。
2、不过目前该网站已经支持中文,操作起来比较方便。
3、注册
进入地址,如图1所示
图1 Bitfinex首页
点击右上角写着“English”的下拉菜单,之后在打开的列表中点击“中文(简化)”,页面就变成中文了,如图2所示。
图2 Bitfinex中文语言首页
点击图2右上角的“注册”,会弹出一个如图3所示的对话框。
图3 Bitfinex注册页面
根据里面的提示填写注册信息即可,依次是用户名、邮箱地址、密码以及密码确认,时区可根据自己的实际情况选择。在“开户”按钮前有一个链接“有推荐人代码吗”,点击后出现如图4所示提示。
图4填写推荐人代码
如果填写了推荐人代码,可以在注册后的前30天的交易过程中获得交易费九折优惠,还是挺不错的。如果读者没有推荐人代码可以忽略这里。
点击“开户”之后,就注册成功了,网站会提示注册成功,并在邮箱中收取确认邮件,如图5所示。
图5 Bitfinex注册成功
登录注册时填写的邮箱,可以看到已经收到注册确认邮件,如图6所示。
图6 Bitfinex注册确认邮件
单击邮件中的链接,完成注册确认,转到如图7所示的登录页面。
图7 Bitfinexi登录页面
点击图7中的“用户名”按钮,会弹出一个登录对话框,如图8所示。如果点击的是图2中的“登录”按钮,出现的也是图8的对话框。
图8 Bitfinex登录对话框
输入用户名/电子邮件和密码,点击登录按钮,就进入登录进了网站,系统自动跳转到了交易页面,如图9所示。
图9 Bitfinex交易页面
页面上分了几个部分,左侧显示了比特币对美元的价格,牌价,订单表(也就是买卖的地方),余额等,右测是图表等,也K线图等,当点击“牌价”中的交易后,可以列出本站可以交易的币种,单击某个币种,就可以在图表中显示K线图了。
2、设置双重验证
点击图9中最右上角的图标,在出现的下拉菜单中选择“安全”,进入安全设置页面,如图10所示。
图10 Bitfinex安全设置页面
点击“双重身份验证”,如图11所示。
图11 Bitfinex支持3种身份验证方式
可以看到其支持三种身份验证方式:U2f、twilio和2FA,这三种的优先级是依次降低的。
这里我们选择比较常用的2FA,即第三种Google Authenticator。
单击第三项下面的设置按钮,会出现一个2FA认证对话框,如图12所示。
图12进行2FA验证
页面提示可以2FA支持安卓、谷歌浏览器插件以及苹果产品三种版本的google身份验证器,读者可以根据自己的情况选择不同的版本。不过为了方便起见,建议使用手机版本。
扫描过二维码,或者直接输入帐户令牌后,输入手机上显示的验证码,点击“启用”按钮进行验证(也有可能输入完成后不需要我们手动去点击启用按钮,它自动就开始验证了),如果没有错误提示,则再次进入注册时填写的邮件,进行邮件激活,如图13所示。这里需要读者注意一下,我在这里启用2FA时,网站没有提示用户去邮箱查询,也没给出其它提示,导致我尝试启用好几次,浪费了一点时间,后面才想到去邮箱里检查一下邮件。
图13 2FA激活邮件
单击邮件中的激活链接,就完成了对2FA的激活,网站自动跳转到Bitfinex的安全设置页面,这里显示“双重身份验证”中的小对勾已经全变亮了,2FA也是启用状态,如图14所示。
图14 2FA设置完成
3、充值提现
3.1充值
点击页面右上角的“存款”,进入充值页面,如图15所示。
图15 Bitfinex充值页面
选择要充值的币种,这里用以太坊Ethereum为例,单击该币种,进入以太坊充值页面,如图16所示。
图16以太坊充值页面
页面提供了三种钱包,分别关联bitfinex三种不同的交易类型:
Exchange钱包:用来对Bitfinex中支持的币种进行交易
Margin钱包:用于短期杠杆和长期头寸的交易
Funding钱包:用于向其他交易者提供保证金融资
如果是普通交易,使用Exchange钱包即可,可以点击“点击生成地址”生成钱包地址。如果点击右侧三个小图标中间的那个,可以生成一个新的地址,但原来生成的地址仍然可用。
3.2提现
点击页面右上角的“提款”即可进入提现页面,这里仍然用以太坊为例,进入以太坊的提币页面,如图17所示。
图17以太坊提币页面
在“请求提款”按钮前包含两个选项,其中第一个选项的意思是保存当前的提取地址,以方便后面在提取时就不需要再输入地址了,这一项是可选项,用户可以根据自己的意愿选择选中还是不选中。第二项是必选项,选中即可,之后点击“请求提款”按钮,就可以完成提币申请了。
需要补充一点的是,虽然网站上有US Dollar这一项,但其实当前美元充值目前已经不可用了。如果里面有美元想提现的话,也需要对个人身份进一步验证,如图18所示。
图18 Bitfinex验证身份
验证身份需要提交身份证正反面扫描件、个人与自己身份证的“合影”等,本文不再进一步说明了,有需要的用户可以根据网站的提示进行验证。如果还是不会,可以后台留言,我们一起探讨。
4、交易
笼统地说,Bitfinex的交易可以分为四种:
普通交易
杠杆交易
OTC(Over The Counter,场外交易)
融资
4.1普通交易
在交易页面,点击牌价上的“交易”链接,在下面的币种列表中选择要交易的虚拟币并单击,会在列表下面该币种的订单表,填写要买入或卖出的数量,单击“兑换买入”或“兑换卖出”即可进行交易了,如图19所示。
图19 Bitfinex普通交易界面
4.2杠杆交易
在图19中的订单表中,如果选择了兑换,是进行普通交易,如果选择了保证金,就是杠杆交易了,如图20所示。
图20 Bitfinex杠杆交易
4.3融资
点击图19或图20中牌价表中的融资,并在可融资列表中单击要融资的币种,可以看到原来“订单表”的位置变成了“融资表单”,在这里可以设置融资利率、要融资的币种数,融资的天数等。如图21所示。
图21融资交易
4.4 OTC场外交易
单击交易页面中的OTC,进入场外交易。
不过在写这篇文章时,Bitfinex的OTC暂时不可用,如图22所示。
图22 Bitfinex尚未开放OTC市场
页面中的提示大意是说,Bitfinex用户对OTC评价不错,希望支持更大的交易。为了带给用户更好的体验,他们正在开发新的交易界面,且新的交易会尽量做到场外交易不影响场内交易,稍候与大家见面。
同时也对场外交易给出两个提示:
(1)OTC交易会向买卖双方均收取0.1%的交易费
(2)OTC只针对大宗交易(最少10万美元)
以上就是在上进行注册、充提币、交易的详细图文教程。
本文来自用户投稿,不代表币大牛资讯立场,如若转载,请注明出处:https://www.98xmw.com/zhis/17209.html
发表回复
评论列表(0条)