区块链ICO交易简明指南
导读:在深入了解区块链终端基本命令之前,我们需要使用比特币API创建自己的ICO,本文为快速学习区块链与加密货币技术。
随着越来越多的公众参与ICO股票市场,有童话故事也有美好史诗崩溃,“加密货币”这个词已成为一个家喻户晓的词汇。
有一部分人都在使用,购买和销售数字货币,或谈论这些故事。但是,大多数人们实际了解的发币技术并不是很深刻。本文就是针对那些刚接触数字货币的人们,讲述加密货币世界的技术细节。开发者在为客户开发ICO时,同样也对技术团队有价值。
什么是加密货币?它是一种基于加密算法的数字货币。法币由国家银行处理,而加密货币是没有任何中心管理的分布式网络。也就是说,每个都是一个相互依赖的网络,由交换有关交易信息的所谓节点组成。加密货币世界中的一个关键概念是区块链,即根据某些规则构建为链表的一系列区块。该网络实际上是一个复制的和分布式数据库,因此区块上的每个人都知道谁将资金转移给谁,以及金额有多少等,即使其中一个节点被损坏,数据也会保证安全。
加密货币的一个主要特征是它们的完整性:当创建交易时,它被认为是未签名的。接下来,构建几个事务的列表,形成一个块。这些区块是由从中获利的矿工生成的。一旦事务包含在块中,该块就通过网络发送并由其他网络用户验证。如果该块被认为是正确的,则它被包含在区块链中;这相当于区块中事务的一个确认。只要将另一个块添加到列表中,前一个块中的事务确认数就会增加一个。由于新块包含前一个块的散列,因此无法取消包含在区块链中的事务。鉴于此,修改或取消交易将导致重新计算区块链,所有变得昂贵且不切实际。
现在我们知道如何构建加密货币网络,需要找出如何计算费率。对于法币,很明显:利率是基于许多因素,如排放,汇率等。加密货币也有影响其利率的因素。最重要的是供需比率,以及其他因素,如能源成本,采矿复杂程度等。
我们团队加密货币最有趣的方面是供应和需求的产生。什么原因导致人们对新货币的需求无人知晓?这个过程非常简单:ICO(数字币发行)的目的正是为了这个目的,就像股票市场上的IPO(首次公开募股)一样。 ICO是吸引投资新货币并提高其市场性的明智方式。 ICO的一个优点是它的简单性:购买货币代币,你只需要欲望和资金,而购买股票公司市场上的股票会更加困难和耗时。
在创建ICO时,开发人员可以在以下两种情况中进行选择:
首先筹集资金,然后在投资者之间发行和分发代币。为此,需要开发一个有投资领域的网站。
代币被发行然后在交易所上交易。因此,需要货币开发和预采矿。
在开发过程中,我们的团队处理了客户选择的第一个选项。我们从头开始组装开发ICO。客户只给了我们关于如何吸引投资的一般概念:启动社群联盟计划并从中获利,项目必须在一定的期限内制定完毕。
这一过程中最有趣的一段是与加密货币API集成。我们来拿比特币举例,以下的一些资源对开发者有帮助:
https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list - API命令及其描述,理论。
https://bitcoin.org/en/developer-reference - 命令及其参数的详细说明。 事实证明这很简单。 我们通过curl使用比特币API。
http://chainquery.com/bitcoin-api - 搜索包含描述和样本卷曲查询的命令的资源。
现在让我们探讨区块链网络的组织方式。前面我们说过,比特币区块链是分布式的。我们使用了两种节点,即公共节点和私有节点。部署在单独服务器上但未连接到公共网络的专用节点包含秘密信息,即用户的私钥。公共节点连接到公共网络,用于与其它节点交换信息。
第一个也是最简单的操作是getnewaddress - 为用户创建一个区块链地址。提交查询如下格式:
curl -user <username>:<password> -data-binary'{“jsonrpc”:“1.0”,“id”:“<id>”,“method”:“getnewaddress”,“params”:[]}' -H' content-type:application/json;'http://<ip>:<port>/
就是这些,没有什么困难或可担心的。在区块链节点上生成私钥,并将公钥返回给用户,私钥用于确认交易,而公钥用于确定转移货币的位置。拿它与借记卡相比的话,私钥是CVV2代码,公钥或地址是用于将资金转移给所有者的账号。
我们讨论一些有趣的事。现在我们的区块链地址已创建,接下来学习进行交易。团队到这个阶段,比特币的另一个特点变得很重要。正如我之前提到的,事实证明所有交易都是最终的。用户的地址不仅是用户拥有多少钱的记录,还有一些代表着未消费的交易额度。你不能简单地从交易中花掉一部分钱;刚才的命令稍有点复杂。作为一个整体,交易可能只花费一次。在加密货币世界中,事务具有输入和输出,因此事务构成链条。
让我们考虑一下,从Alice的地址转移到Bob的地址(事务A),Bob接收1 BTC。由于Bob尚未采取任何行动,因此交易状态为未花费。比如Bob将0.7 BTC转移到Tom,则此新转移的输入事务是事务A,作为输出,我们将获得两个事务:事务B(将0.7 BTC转移到Tom的地址)和事务C(获取在Bob的地址更改0.3 BTC)。之后,交易A的状态将更改为已消费。如果用户想要转移比他在一次交易中更多的BTC,则将有若干输入交易,其总数等于或超过用户所需的数量。
从所有Unspent事务列表中选择Unspent事务取决于逻辑,并且使用简单命令listunspent来实现此目的。查询将发送到公共节点。
curl -user <username>:<password> -data-binary'{“jsonrpc”:“1.0”,“id”:“<id>”,“method”:“listunspent”,“params”:[6,9999999 “[\”<address> \“]”]}'-H'content-type:application/json;'http:// <ip>:<port> /
listunspent的方法参数[6,9999999“[\”<address> \“]”]在这里很有用:
第一个参数是确认的最小数量-6。
第二个(最大9999999)是最大可用值。
第三个是我们想要获得的交易用户地址列表。
该方法返回与指定地址相关的Unspent状态的事务数组。
要创建事务本身,请浏览生成的Unspent事务列表,并生成要传递给createrawtransaction的数组。
curl - user <username>:<password> -data-binary'{“jsonrpc”:“1.0”,“id”:“<id>”,“method”:“createrawtransaction”,“params”:[“[{ \“txid \”:\“myid \”,\“vout \”:0}]“,”{\“address\”:0.01}“]}' - H'content-type:application/json;'http://<ip>:<port> /
createrawtransaction函数在私有节点中执行,因为事务必须使用创建它的用户的密钥进行签名。
接下来在创建事务之后,使用dumpprivkey通过将公钥传递给私有节点来搜索用户密钥,并使用接受新事务十六进制代码的signrawtransaction方法(输入事务数据),使用此密钥对事务进行签名,以及用于签署交易的私钥。
应将已签名的事务发送到公共节点以通知所有用户。为此,使用了sendrawtransaction方法。它包含一个必需的输入参数,即签名的事务十六进制代码。交易的另一个重要方面是矿工的费用计算,但对于单独的文章,最好留下详尽的描述。我们当然不容易理解ICO逻辑的这一部分是如何运作的。我们团队中的大多数人都是加密货币的新手,不得不从我们自己的研究中逐渐收集这些知识。
考虑到开发者在开发加密货币项目时需要学习的技术,我很乐意传授一部分基础知识,希望它对您有用。
作者:知乐之