• 项目
首页>>文章列表 >>金融科技
文章列表

顶级投行如何点评比特币行情

在高盛因比特币研报需求火爆而发布了第一份技术面分析报告后,摩根士丹利也马上跟进了。






摩根士丹利表示,最近向他们公司总部打电话咨询比特币或其他数字货币的客户电话就像洪水一样源源不绝,新形势下公司有必要推出新的研究内容,满足客户需求。




在这种压力下,摩根发布了一篇名为“即将消失的区块链”的研究报告。报告从消息面和基本面上对比特币、以太坊等数字货币价格进行了分析,与高盛得出了相同的结论:这些数字货币的涨势就要到头了。




报告表示,若要让比特币价格接着上涨,就必须让政府支持该币,承认该币的合法性,提振人们对数字货币的信心。作为代价,比特币将被纳入政府监管之中。但这对以去中心化为基本理念的数字货币来说是极为荒谬的。




根据摩根士丹利的报告,比特币价格上涨主要是受以下几个因素推动:


1、日韩两国需求激增。日本在4月份通过了一项法案,正式承认比特币等数字货币为可用作支付的货币,超过2万家日本小型企业宣布支持比特币支付。此外,日本又新成立了好几家新的比特币交易中心,日本一时比特币需求量激增;由于养老金回报率过低,韩国退休老人也趁着这股涨势纷纷投入到比特币炒作大军中去,推动了该币价格的暴涨。


2、中国盘面满血复活。今年五月中国政府宣布冻结三大比特币交易平台提现,这使得中国比特币市场价格暴跌,然而,6月中国政府的态度有所缓和,中国比特币市场在松绑后又开始领先全球,原本低于世界价格25%的中国比特币价格均价,现在已经比世界平均水平高出10%。


3、代币发行数量暴增。比特币大涨潮中,诞生了许多以比特币众筹募款发行的代币。发行者由于看好比特币行情,一旦通过代币众筹到比特币后,第一选择不是用其进行交易,而是持有等待升值。这意味着比特币供给端的减少,也推动了比特币价格上涨。




利好因素出尽,如不得到政府认可将难以持续上涨




摩根士丹利认为,在今年暴涨200%以上后,比特币价格现在增长乏力。政府态度不明使得比特币前途仍不明朗,场外投资者面对3000美元一枚的高价游移不定,目前持观望态度。除非政府认可度方面出现了重大的利好消息,否则比特币的价格将难以上涨。同样的逻辑可用解释比特币的竞争者以太坊。 这意味着比特币将不能向以前那样被用于匿名交易。




现在,在我国三大比特币交易系统上(火币网、OKcoin和中国比特币交易中心),用户都被要求提供完整的身份信息,其绑定的地址都纳入了政府的监管范围之中。




而在日本和韩国,为避免用户使用比特币进行跨国洗钱,两国切断了该国比特币交易平台与外国的联系,即在该国的交易平台上,比特币只能被换成日元或韩元,无法兑换成其他国家的法币,这曾一度导致日韩两国出现了高达30%的价格溢价。




然而,将自身置于政府的监管中,这对比特币来说是一件难堪的事。




高盛:比特币短期涨势将见顶




昨日,有着无数大型客户的高盛指出,考虑到需求旺盛,已经开始覆盖比特币研究,并认为短期涨势到头。 高盛的首席技术分析师Sheba Jafari在报告中得出结论,认为应警惕高于3134的点位(这很有可能是短期内比特币价格的顶部),但若比特币价格跌落至1915和2330美元之间,可以重新看涨。




野村:长期来看数字货币仍然值得投资




野村证券认为,比特币在数字货币市场中仍占有50%以上的市场份额,对于马太效应巨大的货币市场来说,该币仍然是最具有投资价值的货币。




此外,比特币的使用量和用户数目一直在持续上涨,从去年至今几乎翻了一倍。4月,日本政府正式承认了比特币的合法地位,使用比特币支付将被纳入免税货币行列。未来,将有几十万的日本商铺接入比特币支付系统,从长期来看,比特币仍然具有很大的升值空间。




野村证券还点评以太坊称,以太坊的功能应用现在还没有开发完全,但已经有大型企业入驻,未来的需求将会爆发增长,尽管今年至今已暴增48倍,长期来看也还具有升值的空间。

半个月后 证监会又将祭出一个大招

还有半个月的时间,证监会又将祭出一个大招!

《证券期货投资者适当性管理办法》将于2017年7月1日正式开始全面实施,市场人士称其为统领市场适当性管理制度的“母法”。各地证监局与券商进入了备战倒计时。

然而,华尔街见闻联系了多位券商人士关于对《办法》的准备情况,发现仍有部分从业人士对此并不知情。


实际上,这份监管文件“来头不小”,冲击面甚广。

2016年12月16日,证监会正式发布了该《办法》,定于今年7月1日起施行,其中做出多项制度安排,包括:统一投资者分类标准和管理要求;建立层层把关、严控风险的产品分级机制;全面从严规范经营机构相关行为;突出对于普通投资者的特别保护,向投资者提供有针对性的产品及差别化服务等。

对于《办法》中“明确产品分级底线与严控风险的产品分级机制”,上海一位不愿透露姓名的大型券商高管对华尔街见闻表示,这条“影响非常大”。他解释称,金融机构特别是证券公司属于强监管行业,券商本身是一个大牌照,各项具体业务也要申请牌照。现在业务展开与产品分级挂钩后,评级较低的券商就会开展不了,甚至限制开展。


“日后,资本金在内的业务评级指标权重会非常高,比如股东需要增资,这对券商的资本要求会进一步提高。”他如此分析。

此外,有券商从业人士认为,经纪业务、资管业务、研究业务将受到一定影响。

“这几大券商业务对于服务客户的选择要更加细化,对于客户信息的收集更加详细、多样,根据客户的风险承受能力及收益目标进行更加细致的分类,要真正做到目标客户与业务要精确匹配。” 位于上海的华安证券首席宏观分析师徐阳对华尔街见闻如此说道。

徐阳进一步说道,“可以预见的是资管业务门槛会提高,短期内将影响资管业务流量”。从业务开展看,经纪业务中创业板业务投资者选择一定要符合相关规定,投资者风险承受能力与市场准入要做到合理匹配。而对于券商的研究业务,应该针对不同的投资者做出对应的推荐,以防对普通者投资产生误导性影响。


细看《办法》发现突出了对“普通投资者的保护”,特别是将普通投资者向专业投资者的转化进行了规范。该《办法》涵盖了客户购买产品或接受券商服务的全方位业务,包括传统经纪业务、资管业务、研究业务等,覆盖融资融券、个股期权、分级基金等需要准入条件的高风险业务。

值得注意的是,《办法》将对券商的销售环节产生一定影响。方正证券负责人曾对媒体表示,公司规定没有测评的客户拒绝销售,销售高风险产品时客户风险等级与产品风险等级不匹配的,拒绝销售;分级基金权限开通一律实行双录。

华尔街见闻联系了数位券商销售部门负责人,但截至发稿时,均未获得相关置评。

另据券商中国的报道,多家券商对业务系统进行相应的优化改造。比如,广发证券计划引入电子签名系统,客户在7月1日后通过互联网方式签署业务协议、风险揭示书等文本均将使用电子签名。国信证券正梳理现有业务流程并进行完善,包括新制定流程(最低风险级别客户特别保护、高风险产品或服务特别工作程序、双录等)和修改现有流程(开户、风险承受能力测评、金融产品销售等)。


此外,华尔街见闻还亲身到营业部进行“体验”。笔者来到位于北京市朝阳区东三环地区某家券商营业部开立期货交易账户。工作人员仔细询问了笔者是否有期货交易经验,我做出否定回答后,对方简要介绍了期货交易的费率和高风险性。

确认笔者已知相关风险并完成了一份风险承受能力测评后,随即安排了一场远程视频开户,视频另一端工作人员询问了多个开户常规问题。成功开立账户后,该营业部还指定了一位工作人员对笔者进行了两次电话回访,均是对用户体验、交易风险和费率问题进行了说明。

成立仅四年、估值却达到90亿美元 亚马逊看上了这家美国版“钉钉”

成立仅4年的企业协作工具Slack,已成为了硅谷最亮眼的一颗新星。

据媒体报道,Slack最近成功地吸引了亚马逊等科技巨头的收购意向,若亚马逊交易达成,该公司的估值达到90亿美元,而这也将是亚马逊有史以来金额最大的一次收购。

该估值比Slack最新一轮融资高两倍以上。在4月的最新一轮融资,Slack筹资约5.5亿美元,公司估值为38亿美元。这家公司才成立四年,估值就达到90亿美元,如果能在公司初创时就投资它,收益率可谓惊人。


Slack其实是一个企业沟通协作工具,类似于中国的钉钉、企业版微信等,该公司仅成立4年,但其软件真正推出是在2014年,但目前已经拥有了500万日活跃用户量,150万付费用户,增长速度堪称惊人。

3月末,亚马逊目前拥有215亿现金及其等价物,其最大的一笔收购是在2014年对游戏公司Twitch的购买,当时的收购代价是9.7亿美元现金。

亚马逊今年第一财季净利润7.24亿美元,同比跳涨41%,EPS为1.48美元,远超预期的1.12美元。云服务和零售服务已经成为了亚马逊的两张王牌。

Slack增长如此强劲,也难怪引来资金的追随。但值得注意的是,该公司的CEO Stewart Butterfield曾是Flickr的创始人,Stewart Butterfield曾在2005年将Flickr卖给雅虎,而众所周知,卖给雅虎后,曾经红极一时的Flickr很快衰亡了。


曾与微软叫板

在2016年,微软内部就传过就以80亿美元收购这家公司,但因盖茨不赞同这笔交易而作罢,盖茨等更加倾向推动内部已有的资源,做出能与Slack抗衡的软件。

随后微软发布了企业协作工具Teams,与Slack正面叫板。当时,Slack也不甘示弱,Teams发布的那天,Slack在纽约时报买了整版的广告,回应Teams的发布。

若亚马逊收购这家公司,它将与微软等科技巨头的企业协作工作微软365等形成抗衡之势。

煤炭行业复活在即?这笔25亿美元大并购没有告诉你的事

当所有人的目光都聚焦于兖州煤业和嘉能可的竞购战时,这种思考或许更有意思:在巨头眼里,煤炭行业即将复活了么?

今年1月,兖煤向力拓提出收购其附属的Coal&Allied公司,报价24.5亿美元;其中,首付19.5亿美元现金,随后5年每年支付1亿美元。目前,兖煤已取得国内相关部委的全部审批程序。

不过根据双方协议,力拓有权接受其它竞购者“更优质”的报价。正是因为这一条款,在这笔交易进入最后时刻之际,国际大宗商品巨头嘉能可半路杀了出来。


6月9日,嘉能可宣布,出资25.5亿美元竞购力拓旗下公司Coal&Allied。其中,首付20.5亿美元,随后5年每年支付1亿美元。这正好比兖煤的报价高了1亿美元,因此嘉能可也在自己的声明中称:出价高于兖煤,因此属于“更优质”的报价。

华尔街见闻此前提及,当年力拓和三菱联手买下Coal&Allied旗下煤矿的时候,报价高达110亿美元,接近目前兖煤和嘉能可报价的5倍。

Coal&Allied的煤炭储量达到5.56亿吨,如果收购完成,兖煤在澳洲的总煤炭储量将达到8.3亿吨,这对兖煤提升自己在市场上的地位有着至关重要的作用。

对于嘉能可来说,如果拿下Coal&Allied运营的项目,几处矿场联结之后,其运营成本也将得以下降——比如运输成本、调度成本、维护成本等等,能够节省大约10%。以当前大约每吨55美元的生产成本来计算,节省10%意味着其每年能够节省大约3亿美元。


今年以来,国际煤价持续下行,澳大利亚动力煤年内累计跌逾13%。


对于兖煤和嘉能可之间的竞购战,Oilprice网站专栏文章称,这意味着对于大型矿企来说,好的煤炭资产仍有很大需求。

即便兖煤输给了嘉能可,这笔交易涉及的大笔资金,对于全球煤炭行业来说也是信心的提振。

比特币底层技术探秘

比特币真的很酷。当然,关于这项技术目前还存在着不少的争议,包括:它是否是一项有用的技术,加密数字货币是否存在着泡沫,目前面临的管理问题是否能够得到解决。但是从纯技术层面来说,神秘的Satoshi Nakamoto创造了这个引人注目的技术。


不幸的是,尽管可以找到很多资源站在较高的层次解释了比特币的工作原理,但却没有有关底层的资料。在我看来,如果你从一万英尺的高度看的话,你只能够凭感觉来意会了。

对于这么一个新兴的领域,我发现我自己非常渴望去了解比特币的工作机制。幸运的是,因为比特币本质上是分散的,并且是对等的,所以任何人都能够开发出一款符合协议标准的客户端。为了能够更好地了解比特币的工作原理,我决定开发一款属于我自己的比特币客户端,可以向比特币区块链发布交易。

这篇文章介绍了开发一个最小而又可用的比特币客户端的过程,它可以创建一笔交易并将其提交到比特币对等网络上,以便让它包含在区块链中。如果你只是想读一下原始代码,可以随时查看我的Github代码库。

地址的生成

要成为比特币网络的一部分,必须要有一个可以发送和接收资金的地址。比特币使用了公钥加密技术,而地址是从私钥派生出来的公钥的散列版本。令人吃惊的是,与大多数的公共密钥加密技术不同,它的公共密钥会一直保密存放,直到资金从这个地址发送出去。

术语解释:在比特币中,客户端使用的术语“钱包”表示的是地址集合。从协议层面来讲,没有钱包这个概念,只有地址。

比特币对其地址使用了椭圆曲线公钥密码技术。椭圆曲线加密技术与RSA一样,用于从私钥生成公钥,但其占用的空间更小。如果你有兴趣了解一下这种加密技术背后的数学知识的话,那么Cloudflare上的一篇入门文章值得一读。

从256位的私钥开始,生成比特币地址的过程如下图所示:

在Python中,我使用ecsda库来实现椭圆曲线加密。以下代码片段展示了从一个相当重要(也相当不安全)的私钥0xFEEDB0BDEADBEEF(前面补零以达到64或者256个十六进制字符串)来获取公钥的过程。如果你想在地址中存储任何实际的值,那么需要一种更安全的私钥生成方法!

趣事:我最初使用0xFACEBEEF这个密钥创建了一个地址,并向它发送了0.0005比特币。一个月后,有人偷了我的0.0005比特币!我猜,有人肯定偶尔会用一些简单或者通用的私钥来访问地址。你真的应该使用一些更合适的密钥派生技术!

from ecdsa import SECP256k1, SigningKeydef get_private_key(hex_string):

运行代码,获取到私钥(十六进制):

0000000000000000000000000000000000000000000000000feedb0bdeadbeef

获取到的公钥(十六进制):

04d077e18fd45c031e0d256d75dfa8c3c21c589a861c4c33b99e64cf613113fcff9fc9d90a9d81346bcac64d3c01e6e0ef0828543edad73c0e257b845812cc8d28

以0x04开头的公钥表明这是一个没有经过压缩的公钥,这意味着ECDSA(椭圆曲线数字签名算法)中x和y轴坐标简单的关联在一起。根据ECSDA的原理,如果你知道x值,那么y值只能取两个值,一个偶数和一个奇数。基于这个信息,可以仅使用x中的一个值和y的极性来表达一个公钥。这使得公钥的大小从65位减少到33位,这个过程(和后续计算的地址)称之为压缩。对于压缩后的公钥,根据y的极性,将以0x02或0x03开头。未压缩的公钥常用于比特币,这也是我在这里所使用的。

要从公钥生成比特币地址,公钥先要计算sha256散列,然后再计算ripemd160散列。这种双重散列提供了额外的安全层,ripemd160散列提供了sha256的256位散列之后的160位散列,这样缩短了地址的长度。一个有趣的结果是,两个不同的公钥可以哈希生成一个相同的地址!然而,对于2的160次方个不同的地址,这不太可能在短时间内发生。

import hashlibdef get_public_address(public_key):

这将生成c8db639c24f6dc026378225e40459ba8a9e54d1a这个公共地址,这有时会被称为哈希160地址。

如前所述,有一点比较有意思,从私钥到公钥的转换以及从公钥到公共地址的转换都是单向转换。如果你有一个地址,那么找到关联公钥的唯一办法就是解决SHA256哈希问题。这与大多数的公钥加密技术不同,那些机密技术中公钥是公开的,而私钥会隐藏起来。而在当前这个情况下,公钥和私钥都会隐藏起来,而只公布地址(哈希过的公钥)。

隐藏公钥是有原因的。虽然从公钥计算得到相应的私钥通常是不可行的,但是如果生成私钥的方法已经被破解,那么就能很容易地通过公钥推断出私钥。在2013年,这种事情发生在了Android比特币钱包的身上。 Android在随机数的生成上有一个关键性的缺陷,它会打开一个向量,攻击者通过这个向量可以从公钥找到私钥。这也就是为什么不鼓励地址重用,因为要签署交易,你就得公开公钥。如果你在向某个地址发送交易后不重用该地址,那你就无需担心该地址的私钥会暴露。

表示一个比特币地址的标准方式是使用Base58Check进行编码。该编码只是地址的一种表示形式(因此可以被解码/反推)。它生成类似于1661HxZpSy5jhcJ2k6av2dxuspa8aafDac这种形式的地址。 Base58Check编码提供了一个较短的地址表示方法,并且还内置校验和,可以检测出错误的地址。几乎在每个比特币客户端中,你看到的地址都是Base58Check编码后的地址。 Base58Check还包含一个版本号,在下面的代码中我把它设置为0,这表示该地址是一个pubkey散列。

# 58 character alphabet usedBASE58_ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'def base58_encode(version, public_address):

以上所有的代码展示了我从私钥FEEDB0BDEADBEEF(前面需要填充零)到到比特币地址KK2xni6gmTtdnSGRiuAf94jciFgRjDj7W的整个过程!

通过这个地址,我现在就可以来获得比特币了!为了把比特币放入我的地址,我用澳元从btcmarkets购买了0.0045比特币(在撰写本文时约为11美元)。 使用btcmarket的交易门户,我将其转移到上面的地址,在此过程中会损失0.0005比特币的交易费用。你可以在交易* 95855ba9f46c6936d7b5ee6733c81e715ac92199938ce30ac3e1214b8c2cd8d7*中的区块链上看到这笔交易。

连接到P2P(点对点)网络

现在,我有了一个地址,而且上面还有一些比特币,事情变得更有趣了。如果我想将比特币发送到别的地方,那么就必须连接到比特币的P2P网络上。

引导

当我第一次学习比特币的时候,我发现了一个关键的问题:由于网络的分散性,网络上的节点是如何找到其他节点的?没有中央控制点,比特币客户端是如何知道如何引导并与网络的其他节点进行交互的?

理论服从实践,在最初的节点发现过程中是存在着极少数的集中控制器。一个新的节点寻找其他节点的方法在原理上就是通过DNS去查找Bitcoin社区成员维护的“DNS种子”服务器。

事实证明,DNS非常适合于引导客户端,因为DNS协议基于UDP,轻量级,不太容易受到DDoS攻击。IRC以前曾被用作引导的方法,但是因为容易受DDoS攻击这个弱点而停止使用了。

种子DNS被硬编码到Bitcoin的核心源代码中,并由核心开发人员负责修改。

下面的Python代码首先连接到一个DNS种子,然后打印出一个可以连接的节点列表。使用socket库,它基本上执行的是一个nslookup操作,然后返回从seed.bitcoin.sipa.be查询得到IPv4地址结果中的第一个。

import socket# 向bitcoin DNS服务器发送DNS请求来查找节点nodes = socket.getaddrinfo("seed.bitcoin.sipa.be", None)# 选择第一个节点node = nodes[0][4][0]

查到的地址是208.67.251.126,这是一个友好的对端节点,我可以去连接这个地址了!

跟对端节点打招呼

各个节点之间是通过TCP来建立连接的。连接对端节点时,比特币协议最开始的握手消息是一个版本消息。在节点交换版本消息之后,才会接受其他消息。

比特币协议消息在“Bitcoin开发人员参考手册”中有详细的记录。使用开发人员参考手册作为指南,可以在Python中创建version消息,如下面的代码片段所示。 其中大多数的代码都是用于打开与对端节点的连接。如果你对细节感兴趣的话,可以查看开发者参考手册。

version = 70014services = 1 # not a full node, cant provide any datatimestamp = int(time.time())

使用Python的struct库,版本有效载荷数据可以打包成正确的格式,请特别注意一下数据的字节顺序和字节宽度。将数据打包成正确的格式很重要,不然对端节点将无法理解收到的原始数据。

payload = struct.pack("

再说一遍,可以在开发人员参考手册中找到这些数据的说明。最后,在比特币网络上传输的每个有效载荷都需要加上一个包头,其中包含了有效载荷的长度、校验和以及消息类型。包头还包含了魔术常数0xF9BEB4D9,它在所有主要的比特币消息中都有。以下函数返回一个带有包头的比特币消息。

def get_bitcoin_message(message_type, payload):

将数据打包成正确的格式,并添加包头,然后发送给对等节点!

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

比特币协议要求在接收到版本消息后,返回一个Verack确认消息。 因为我正在构建的是一个微型的“为了兴趣而做”的客户端,并且因为即使我不按照协议这么做的话,其他节点也不会认为我这个客户端有什么不同,所以我忽略了他们的版本信息,并且没有发送响应消息。在连接时发送版本消息足以让我在后面能够发送更加有意义的消息。

运行上面的代码会打印出以下内容。结果看起来很有希望,“Satoshi”和“Verack”是在消息转储中看到的最好的单词!因为如果我的版本消息格式错误的话,对端根本就不会做出回应。

b'\xf9\xbe\xb4\xd9version\x00\x00\x00\x00\x00f\x00\x00\x00\xf8\xdd\x9aL\x7f\x11\x01\x00\r\x00\x00\x00\x00\x00\x00\x00\xddR1Y\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xcb\xce\x1d\xfc\xe9j\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\xb8>*\x88@I\x8e\x10/Satoshi:0.14.0/t)\x07\x00\x01\xf9\xbe\xb4\xd9verack\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00]\xf6\xe0\xe2'

比特币交易

要转移比特币,必须向比特币网络广播这笔交易。

有一个很重要的概念需要知道,那就是比特币地址的余额仅由该地址可以支出的“未花费的交易输出”(UTXO)的数量组成。当鲍勃向爱丽丝发送比特币时,他只是创建了一个UTXO,而Alice(而且只有Alice)可以以此来创建另一个UTXO,并发送比特币。因此,比特币地址的余额是由可以转移到另一个地址的比特币的数量决定,而不是直接由比特币的数量决定。

要强调的是,当有人说他们拥有X数量的比特币时,他们的意思是说所有可以用来支付的UTXO的总和是价值X比特币。区别很小,但是很重要,比特币地址的余额不直接记录在某个地方,而是可以通过对可以支付的所有的UTXO进行求和来得到的。当我意识到这个的时候,我大大惊叹了一句:“哦,原来它是这样工作的!”。

这样做的一个副作用就是交易输出可以是未花费的(UTXO),也可以是已花费的。不可能只花费某人为你花费的数量的一半,然后在以后花费剩余的数量。对于收到的输出,如果你只想要花费其中一小部分,那你可以发送这一小部分给其他人,而将其余部分发送给自己。其简化版本如下图所示。

在创建交易输出的时候,将同时创建一个锁定条件,这将允许将来的某人通过所谓的交易脚本来花费它。最常见的锁定条件是:“要花费这个输出,你需要证明你拥有与特定公共地址对应的私钥”。这被称为“支付公钥哈希”脚本。然而,通过比特币脚本创建其他类型的条件也是可以的。例如,创建可以由任何一个拥有某个哈希的人花费的交易输出,或者创建任何人都可以花费的交易输出。

通过脚本,可以创建简单的基于合同的交易。脚本是一种基本的基于栈的语言,它包含了大量的操作,以此来检查哈希是否相等以及验证签名。脚本并不是完整的图灵机,它不支持任何循环功能。与之有竞争关系的加密数字货币以太坊(Ethereum)就是建立在这一点上,它拥有“智能合同”,并具有图灵机的完整语言。关于在加密货币中包含图灵机完整语言的实用性、必要性和安全性方面有很多的争论,但我还是把争论留给其他人吧!

在标准术语中,比特币交易由输入和输出组成。输入是一个UTXO(当前正在花费的),输出是一个新的UTXO。单个输入可以有多个输出,但输入需要在交易中完全消耗。输入剩余物的任何一部分都是矿工的采矿费。

对于我这个客户端,我希望能够将以前从交易所转移到的比特币发送到我的FEEDB0BDEADBEEF地址。使用与之前相同的过程,我使用私钥BADCAFEFABC0FFEE生成了另外一个地址1QGNXLzGXhWTKF3HTSjuBMpQyUYFkWfgVC。

创建原始交易

要创建一笔交易,首先是对“原始交易”进行打包,然后对原始交易进行签名。开发人员参考手册中详细说明了交易的内容。下文将讲述交易的构成元素,但这里先说几个注意事项:

比特币中常见的术语包括签名脚本和pubkey脚本,我发现这有点混乱。签名脚本用于满足我们要在交易中使用的UTXO的条件,而pubkey脚本用于设置条件以满足我们正在创建的UTXO的花费。签名脚本的另一个更好的名称是解锁脚本,而pubkey脚本的另一个更好名称是锁定脚本。比特币交易值在Satoshis中指定。Satoshi代表比特币可分割的最小部分,是一个比特币的十亿分之一。

为了简单起见,下面显示的是一个输出和一个输入的交易。可以以相同的方式来创建具有多个输入和输出的更复杂的交易。

字段描述Version交易的版本 (当前是1)Number of inputs需要花费的输入的数量Transaction ID需要花费地交易地源头Output number需要花费的交易的输出Signature script length签名脚本的长度(字节)Signature script签名脚本Sequence number除非你要使用一个锁定时间,否则总是0xffffffffNumber of outputs需要创建的输出的数量Value需要花费的Satoshis的数量Pubkey script lengthpubkey脚本的长度(字节)Pubkey scriptpubkey脚本Lock time包含在区块中的交易的最早时间/区块号

忽略签名脚本和pubkey脚本,我们可以很容易地看到原始交易中的其他字段应该怎么设置。要将我的FEEDB0BDEADBEEF地址中的资金发送到我的BADCAFEFABC0FFEE地址,我们来看看交易所创建的这笔交易:

交易ID为95855ba9f46c6936d7b5ee6733c81e715ac92199938ce30ac3e1214b8c2cd8d7。发送到我的地址的输出是第二个输出,输出1(输出编号从0开始)。输出的数量为1,因为我想将FEEDB0BDEADBEEF中的所有内容发送到BADCAFEFABC0FFEE。值最大可以达到40万的Satoshis。为了留出一些费用来,一定要将值设置地小于这个最大值。我允许有2万的Satoshi作为费用,所以将值设定为38万。锁定时间将被设置为0,这样可以在任何时候或区块中包含交易。

对于我们的交易的Pubkey脚本,我们使用了“支付Pubkey哈希”(或p2pk)脚本。该脚本确保只有拥有公钥的人才能够使用所提供的比特币地址来支付所创建的输出,并且所提供的签名已经由保存相应私钥的人来生成公钥。

要解锁已由p2pk脚本锁定的交易,用户需要提供公钥和原始交易的哈希签名。根据公钥计算出散列值,并与脚本创建的地址进行比较,并对所提供的公钥进行签名验证。如果公钥的散列值和地址相等,并且签名通过验证,则可以花费输出了。

在比特币脚本的运算对象中,p2pk脚本如下所示:

OP_DUP

将运算对象转换为值(可以在wiki上找到)并输入公共地址(在Base58Check编码之前)可以得到如下十六进制形式的脚本:

0x76

对交易进行签名

p2pk交易中的签名脚本有两个单独但关联的用途:

通过提供公钥散列到UTXO已发送的地址,脚本对我们正在尝试花费的UTXO进行校验(解锁)。脚本还会给我们正在提交到网络的交易进行签名,这样就没有人能够在不使签名失效的情况下修改交易了。

但是,原始交易包含了一个签名脚本,而这个签名脚本又应该包含原始交易!要解决这个鸡和鸡蛋的问题,需要在对交易签名之前把我们在签名脚本中使用的UTXO的Pubkey脚本放进去。据我所知,使用Pubkey作为占位符似乎并没有什么原因,占位符可以是任意数据。

在原始交易被哈希之前,它还需要附加一个Hashtype值。最常见的Hashtype值是SIGHASH_ALL,它标识整个结构,使得输入或输出都不能被修改。这个Wiki页面列出了其他哈希类型,这些类型允许在交易签名后对输入和输出的组合进行修改。

下面这个函数将原始交易的值放在一起,返回一个python字典。

def get_p2pkh_script(pub_key):

使用以下值调用代码能创建出我所感兴趣的原始交易。

private_key = address_utils.get_private_key("FEEDB0BDEADBEEF")

在上面的代码中我使用了私钥来生成to_address,这个看起来可能会让人感到困惑。其实这只是为了方便,并能展示出如何找到to_address。在你和别人交易的时候,你需要问他们要公共地址,而不需要知道他们的私钥。

为了能够进行签名,并最终将交易发布到网上去,原始交易需要采用适当的手段进行打包。这个过程是在get_packed_transaction函数中实现的,我不会把代码复制到这里,因为它本质上只是一些结构打包代码。 如果你感兴趣的话,可以在我的Github代码库的bitcoin_transaction_utils.py文件中找到它。

我定义了一个生成签名脚本的函数。生成签名脚本后,应该替换掉占位符签名脚本。

def get_transaction_signature(transaction, private_key):

从本质上讲,签名脚本的提供是为了证明我可以把输出当做输入来花费,这个签名脚本是我之前交易的pubkey脚本的输入。这个工作机制如下所示,这是从比特币wiki上获取的。从表格的第一行到下面的最后一行,每行都是脚本的一个迭代。 这是用于支付pubkey散列pubkey脚本,上文提到过这是一个最常见的脚本。 它也是我正在创建的交易和我要履行的交易的脚本。

栈脚本描述空signaturepublicKey OP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFYOP_CHECKSIG签名脚本中的signature和publicKey合并到pubkey脚本中。signature publicKeyOP_DUP OP_HASH160 pubKeyHash OP_EQUALVERIFYOP_CHECKSIGsignature和publicKey添加到栈中signature publicKey publicKeyOP_HASH160 pubKeyHash OP_EQUALVERIFYOP_CHECKSIG栈顶的元素(publicKey)被OP_DUP复制了一份signature publicKey pubHashApubKeyHash OP_EQUALVERIFYOP_CHECKSIG栈顶的元素(publicKey)被OP_HASH160计算哈希,并把pubHashA压入栈中。signature publicKey pubHashA pubKeyHashOP_EQUALVERIFYOP_CHECKSIGpubKeyHash添加到栈中。signature publicKeyOP_CHECKSIG检查pubHashA和pubKeyHash是否相等,如果不相等,则中断程序运行。True-根据提供的publicKey来检查signature是否是有效的交易签名散列。

如果提供的公钥散列不是脚本中的公钥散列,或者提供的签名与提供的公钥不匹配,那么这个脚本就会执行失败。这是为了确保只有拥有pubkey脚本中地址的私钥的人才能够花费输出。

你可以看到,这是我第一次提供公钥。到目前为止,只有公共地址被公布出来。在这里提供公钥是为了能够验证交易的签名。

为了能在网络上进行传输,我们可以使用get_transaction_signature函数对交易进行签名和打包了!这涉及到使用真实签名脚本替换占位符签名脚本,并从交易中移除hash_code_type,如下所示。

signature = get_transaction_signature(raw, private_key )

发布交易

随着交易打包和签名的完成,下一步就是网络的事情了。通过使用本文之前在bitcoin_p2p_message_utils.py中定义的一些函数,下面的代码片段将消息头添加到待发送的数据上,并将其发送给对端节点。如前所述,首先需要发送一个版本消息,以便能够接受后续的消息。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

发送交易是最烦人的一部分。如果我发送了一个结构或签名错误的交易,则对端节点通常会删除连接,或者更好一点,回复一个包含错误信息的消息。类似于这样的错误消息(非常得烦人):“S值不需要这么高”,这是由于使用sigencode_der的ECSDA编码方法对交易散列进行签名导致的。尽管签名是有效的,但实际上比特币矿工并不喜欢以允许网络垃圾邮件形式格式化的ECSDA签名。这个问题的解决方案就是使用sigencode_der_canonize函数,该函数用于将签名格式化为其他的格式。这是一个简单但非常难调试的问题!

不管怎么样,我终于让程序运行起来了,看到我的交易进入了区块链,我非常得兴奋!当获知我的这个小巧简洁并且是纯手工打造的交易将永远成为比特币账户的一部分的时候,心中的成就感油然而生。

当我提交交易的时候,我的交易费用相对于中位数来说相当得低(我通过比特币费用网站查到的),因此这花了矿工大约5个小时的时间来决定将其包含在一个区块中。我通过查看交易的确认次数来检查这一点,这是对交易所涉及的区块数量的度量。在写这篇文章的时候,有190个确认。这意味着在我的交易的区块之后,还有190个区块。这可以相当安全地得到确认,因为需要对网络进行猛烈的攻击才能重写190个块来删除我的交易。

“高攀不起”的香港楼市:停车位拍出451万人民币 15平米“蚁穴”要价340万

香港楼市又一次上头条了,这次是因为“天价”停车位和“特斯拉公寓”。

66万美元的“天价”停车位

《明报》援引土地注册处称,香港岛一个停车位卖出518万港元(66万美元)的天价,创下纪录新高。该停车位面积为188平方英尺,均价约2.75万港元/平方英尺(25.8万元人民币/平方米)。

这一停车位地处英皇国际旗下西营盘维港峰住宅区,成为香港最贵住宅项目车位,其售价甚至高过当地的一些住宅。以新界沙田一套284平方英尺的两居室为例,其在4月售价为420万港元,远低于518万港元的“天文数字”。

(图为维港峰住宅区位置)

值得一提的是,前一个停车位最高交易记录同样诞生于维港峰住宅区。

媒体援引分析师Patrick Wong和Francis Chan称,购买住宅的税负上升可能刺激非住宅地产的投资需求,有的买家转向了写字楼和停车位

价值50万美元的“特斯拉公寓”

在香港买一辆特斯拉Model X的价格约为15万美元,但要是买同样大小(约15平方米)的公寓,那荷包可能要“焦虑”了——这样一套迷你公寓的价格差不多要50万美元。

随着香港房价的走高,且连续七年雄霸“全球房价最难承受之城”榜首,越来越多的房地产商“因地制宜”,开发出更多面积日渐减小的公寓。除了恒基地产设计的“特斯拉公寓”,还有俊和发展推出的“花棚公寓”,其建造面积仅12平方米,相当于加州一个花棚的大小。

里昂证券房地产研究地区主管Nicole Wong对媒体表示,人们已经降低对住宅面积的预期,所以小型公寓的买家越来越多。

感受一下小型公寓每平方英尺售价:在九龙城,一间181平方英尺的高层公寓在5月的售价为25897港元/平方英尺(约27.9万港元/平方米,但这个价格依然不如“天价”停车场),总价约469万港元。

对于小型公寓日渐壮大的状况,香港政府似乎不以为意,政府发言人Terry Wong称,现阶段政府让房地产市场保持灵活性,所以房地产商可以适当满足市场的需求。

二十年来最火热楼市

尽管为了给楼市降温,香港政府屡出“辣招”,但这一地区的房地产市场仍旧“高烧不退”,房价连涨的持续时间更超越1997年

中原地产研究部日前称,反映香港房价情况的中原城市领先指数CCL最近再度创下历史新高,报158.92点。截止6月9日,CCL已经连续16周创下历史新高,打破了1996年12月8日-1997年3月16日期间15周的纪录,是20年来创历史新高时间最长的纪录。

楼市持续火热,房地产商自然“坐享其成”。长实地产近日透露,今年上半年在香港售出超1530间房屋,同比增长七倍,超过全年目标,上半年在香港售楼营收超256亿港元。

都在抢下一个BAT 港交所这次放了个大招

山不过来,我就过去。曾经因为制度因素与阿里巴巴失之交臂的港交所,为了不让遗恨重演,这一次放了个大招!


6月16日下午,香港交易所(以下简称“港交所”)宣布将在香港资本市场的主板及创业板之外推出“创新板”,目前已经发布了《建议设立创新板》的框架咨询文件,同时将在今年8月份左右完成征求市场建议,最早于2018年初采取开展相关活动。


据了解,港交所推出创新板旨在吸引新经济公司赴港上市。


港交所方面提供的数据显示,过去10年在港上市的新经济行业公司仅占香港证券市场总市值的3%,而纳斯达克、纽交所以及伦交所这一比例分别为60%、47%和14%。


为了不再失去下一个“BAT”,港交所表示,创新板将允许尚未盈利、同股不同权的公司以及将香港作为第二上市地的中国内地公司上市。同时,创新板将分为创新主板和创新初板两部分,其中创新初板类似内地的新三板,将仅限专业投资者进入。


此外,考虑到创新板公司面临的巨大风险,港交所计划采取快进快出的政策,即尽量放宽门槛,但只要创新初板连续停牌90日、创新主板连续停牌6个月即自动除牌。


港交所瞄准新经济


“我们推出创新板包括对创业板和主板做的一些调整,都是为了促进香港证券市场提升竞争力与质量。”港交所总裁李小加16日下午在香港表示,创新板推出的目的是要争取更多的新经济公司赴港上市,因为目前香港证券市场仍然高度集中在旧经济领域,尤其依赖于金融业,而且现有的上市模式不适合新经济企业在香港上市。


对于新经济的定义,李小加表示,主要是那些依靠技术、商业模式以及非传统的创新力量为主要驱动力的公司,这些公司往往在盈利能力以及财务表现上区别于传统公司,目前香港的上市制度与新经济公司的需求之间存在差距。“香港已经是首次公开招股的首选之地。为了满足投资者及发行人不断变化的需求及保持市场领先地位,我们必须检讨市场架构,与时俱进。”