42个币

42个币

42个币 是极其罕见的加密虚拟货币,具有独特的通缩排放模型,公平分配的性能(无ICO,预挖和实时挖),同样支持私人和公共交易。 它基于开放资源对等的互联网协议,以及工作量证明 / 权益证明混合式的区块生成方法。

目录

历史

42个币于2014年1月初由名为hendo420的用户在bitcointalk.org论坛上推出。他的想法是创造一种“超级稀有”的币种,“只能挖到42个”。根据道格拉斯亚当斯的“银河系漫游指南”,这个名字中的数字42与20世纪50年代美国棒球运动员杰基罗宾逊使用的数字相关,代表着生命的意义。 1997年,美国职业棒球大联盟让所有大联盟球队全部取消使用他曾用的42号球衣号码 – 这种决定在这项运动的历史上第一次,推动了罗宾逊纪念品的价格飙升。

42个币的价值顶峰达到了每个币的最高交易价格为1900.00 BTC。当时(2014年1月13日),只有0.8个硬币在流通,它成为了第一个以不到1个币的流通量使价值超过100万美元的虚拟货币。

在42个币的历史中,有一点值得注意,2014年春季,该硬币的供应量真的达到了42个,但在2014年3月17日,GitHub用户sherlockcoin(又名soopy452000)使42个币突破限制无限供应。他利用KGW达到这一点,却没有人注意到这个“小变化”。

与此同时,硬币的数量增加,价格却下降了。 2014年5月29日,hendo420离开了这个项目,他解释说:

“我因为嬉皮科技的不断抨击和硬币价格的不断下降陷入了深深的忧郁之中。医生给我开了药起到了一定的作用,但他建议我不要再继续从事这个会导致我抑郁自杀的工作了……我在情绪上已经无法再继续工作了……“

他把42个币交给了soopy452000,可他为这个项目工作一个月后就投降了。

2015年7月,Woodcoin的开发者funkshelper在审查代码时发现,很明显,实际上并没有任何东西可以阻止硬币的供应量超过42个。他发起了一个pull request来修复这个漏洞,但它并没有及时合并,也没有更新客户,所以大多数人还是无法支持有上限的区块链。

在2015年10月26日,hendo420回来工作并承诺修复42个币,“在不损害任何人硬币的情况下将总硬币数量退回到42个以下”。但过了一段时间,他只是关闭了bitcointalk.org论坛上所有关于42个币的话题,并没有做任何解释。

2016年6月7日,等待Hendo420回归已经超过7个月了,一条关于42个币的新帖由另一个用户Lasergun发起。经过5个月的投票后,社区决定通过以旧(84)换新(42),并添加权益证明模式作为验证交易的附加手段,以此回到有限供应的想初衷。此外,区块更新时间从42秒增加到7分

钟,由此证明了42币并非需要快速交易。基于源代码的新区块链于2016年11月12日发布。

技术特征

区块

交易历史通过被称作区块的东西永久记录在中。是尚未被记录的一些或所有最新交易的记录集。

区块结构

字段 类型 大小 描述
魔法数 无符号整型 4 总是 0xE5E9E8E4
区块大小 无符号整型 4 整个区块的字节数
区块头 结构 80 4包含6个数据项
交易数量 可变整形 1-9
交易集 交易 交易数据大小 交易列表
区块头签名 无符号字符型 <= 72 权益证明的签名

交易

交易是一组数据的签名部分,广播到网络上并收集到区块中。 它通常引用先前的交易,并将其中的一定数量的42币赋予一个或多个新的公钥。 目前有几种可能的交易类型。.

用户操作

这种交易通常用于从未使用的输入中兑换42个币。 它通常会引用未使用的输入并创建具有指定值和目的地的新输出。

Coinbase

Coinbase只有一个输入,而且这个输入有一个’coinbase’参数,而不是scriptSig。 ‘coinbase’中的数据可以是任何形式的,但要求未被使用过。42个币将当前紧凑格式目标和任意精度的“extraNonce”编号放在那里,每当区块头中的Nonce字段溢出时,编号就会递增。 extranonce有助于扩大领域内的功能。

这些交易用于奖励工作量证明的矿工。 权益证明模式的区块也有coinbase交易,但输出为空。


Coinstake
这些交易为权益证明模式的区块头提供适当的证据。 这种类型与用户交易类似,但也有一些差异。

·第一个输出必须是空的;

·交易的首次输入需满足当前权益证明的难度。

·允许通过支付负面费用来生成新币。

·第二个输出的目的地必须是向公钥支付(稍后介绍)。

交易的一般结构

字段 类型 大小 描述
版本 无符号整型 4字节 目前为1
时间戳 无符号整型 4字节 交易时间戳
输入数量 可变整型 1-9字节
输入列表 TxIn 输入集大小 输入列表或coinbase资产
输出数量 可变整型 1-9字节
输出列表 TxOut 输出集大小 输出结构列表
时钟时间 无符号整型 4字节 最后一笔交易的区块高度或时间戳

输入格式
输入即是引用不同交易的输出。通常在交易中会列出 多次输入。被引用的输出值相加,总和就是可用于此笔交易的输出值。

字段 类型 大小 描述
txid 无符号字符型 32 前一次交易的ID
n 无符号整型 4 即将完成交易的输出的编号索引
scriptSig的长度 可变整型 1-9 scriptSig的长度
scriptSig 无符号字符型 前半部分,公钥脚本的签名
序列号 无符号整型 4 交易变体的编号,如果未指定n时钟时间,则不相关。 默认情况下为0xffffffff,更多详细说明请参阅此链接。

输出格式
输出包含了发送42个币的指令。Value是以聪( ,1个42币=100,000,000聪,42个币中的聪也叫做Dent)为单位的数值,反映了该输出的价值。

字段 类型 大小 描述
输出值 无符号长整型 8 传输的聪值(42/108)
scriptPubKey的长度 可变整型 1-9 scriptPubKey的长度
scriptPubKey 无符号字符 型 前半部分脚本,支出指令

目的地
用户交易和coinbase交易一共有三种类型的目的地:

  • 公钥 (Pay-to-Pubkey)

scriptPubKey: [pubKey] OP_CHECKSIG
scriptSig: [sig]

  • 公钥的 (Pay-to-PubkeyHash)

scriptPubKey: OP_DUP OP_HASH160 [pubKeyHash] OP_EQUALVERIFY OP_CHECKSIG
scriptSig: [sig] [pubKey]

  • 脚本的哈希 (Pay-to-ScriptHash)

发送至脚本的哈希:
scriptPubKey: OP_HASH160 [20-byte-hash of {[pubkey] OP_CHECKSIG} ] OP_EQUAL
scriptSig: <取决于输入类型>

结算的示例:
scriptPubKey: OP_HASH160 [20-byte-hash of {[pubkey] OP_CHECKSIG} ] OP_EQUAL
scriptSig: [signature] {[pubkey] OP_CHECKSIG}

  • 目的地为空

scriptPubKey: (空)
scriptSig: (空)

  • 非标准型脚本

任何人均可使用:
scriptPubKey: (空)
scriptSig: OP_TRUE

工作量证明模式

工作量证明是为困难(昂贵)的数学任务提供的解决方案。 这个方案必须十分繁琐的检验数据是否满足了所需要求。

目前,工作量证明模式仍然是为加密虚拟货币提供最实用的初始造币方法,所以我们决定把它作为我们混合动力设计的一部分。

42个币利用hashcash的方法提供工作量证明。 调整这项工作的难度,以便将网络产生新区块的速率限制在要求的目标间隔速率内(从10到30分钟不等)。 由于成功证明生成的可能性非常低,所以我们无法预测网络中哪个工作计算机能够生成下一个解决方案。

生成一个POW区块所需时间
没有人有准确的答案,但是可以估计大概要花多长时间。

假设你有一个1 MH / s哈希速度的硬件,我们就可以估计一下,在目前42个币的工作证明难度下,生成工作量证明所需时间的平均值。

难度1.0由目标的价值0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 所表示。

因此,要得到成功的工作量证明需要尝试0xFFFFFFFFFFFFFFFF / 0x00000000FFFFFFFF 即~ 4294967297 次尝试。

难度为360,需要尝试~ 360 * 4294967297 = 1546188226920次。如果能达到1MH/S即1000000哈希值每秒,那么扫描完全部数量的哈希需要1546188226920 / 1000000 = 1546188 seconds or 1546188 / 86400 = 17,89 天。

一天内成功生成一个区块的可能性同样可以用hashrate套入下列公式算出: P = nHashesPerSecond * 86400 / (4294967297 * 难度)。

工作原理
每一个区块头由6种字段表示,这些字段中的一些结构可以相当自由地变化。

字段 类型 大小 描述
版本 无符号整型 4 不能手动修改
前一区块的哈希值 无符号字符型 32 不能手动修改
根节点的哈希值 无符号字符型 32 默克树的哈希值,随着交易的修改、添加和删除而改变
时间戳 无符号整型 4 可以手动更新为[max tx timestamp, time() + 3600]内的任意值
当前目标的哈希值 无符号整型 4 不能手动更新
随机数 无符号整型 4 响应POW模式的尝试,每次尝试新的哈希值时都将更新

奖励机制
区块奖励为0,矿工只能通过交易得到费用。

权益证明模式

2012年8月19日,Sunny King在中同时引入了权益证明和工作量证明机制。权益证明是指利用货币本身(所有权)来实现特定目标的模式。 在42个币中,它用来处理采矿和交易过程,可以与工作量证明相媲美。

42个币使用混合Coin-Age / CoinDayWeight方法提供权益证明。 对证明难度进行调整,以便将网络中产生新块的速率限制在7分钟的目标间隔速率内。 由于成功证明生成的可能性非常低,所以我们无法预测网络中哪个工作计算机能够生成下一个解决方案。

币龄’
币龄是指txn输入的时间,等于所发送硬币的数量乘以这些硬币的平均年龄,币龄以天为单位。每当硬币被发出并且提供签名时,币龄将重置为零。币龄可用于计算强制性费用,阻止奖励或证明哈希目标。

CoinDayWeight
这个概念与币龄类似,只是币龄是以42小时的偏移量计算的,且没有上限,而CoinDayWeight是权益证明体系中证明哈希目标的参数。

nBlockTarget = CoinDayWeight * nNetworkTarget

证明哈希需要满足nBlockTarget,所以CoinDayWeight越高,权益证明模式下的区块生成可能性就越高。

Coinstake kernel
Coinstake kernel是一个虚拟结构,生成于权益证明模式下区块的有效尝试中。这种结构存在于数据库和内存中,但不在网络上。 下表描述了kernel的参数:

字段 类型 大小 描述
nStakeModifier 无符号长整型 8 确定性调节器,干预计算,使得在确认硬币时预先计算之后的权益证明变得非常困难
nTimeBlockFrom 无符号整型 4 为前一次交易的区块提供时间戳,防止节点为了之后生成交易的优势猜测一个好的时间戳
nTxPrevOffset 无符号整型 4 区块中前一次交易的偏移量,用以降低网路节点同时生成coinstake的概率
nTxPrevTime 无符号整型 4 前一次交易的时间戳,用以降低网路节点同时生成coinstake的概率
nPrevoutNum 无符号整型 4 前一次交易的输出数字,用以降低网路节点同时生成coinstake的概率
nTimeTx 无符号整型 4 当前时间戳

工作机制
扫描所有可用的输入,从而找到满足下列条件的幸运儿:

SHA256(SHA256(KERNEL)) < CoinDayWeight * NetworkTarget

矿工必须找到一个低于目标值的SHA256哈希。 该目标是使用CoinDayWeight参数从网络目标中导出的。 证明由kernel哈希和区块头签名来表示。 每个coinstake kernel由6个字段的结构表示,这些字段中的一些结构可以相当自由地变化。

字段 类型 大小 描述
nStakeModifier 无符号长整型 8 不能手动修改
nTimeBlockFrom 无符号整型 4 提供前一次交易的区块时间戳
nTxPrevOffset 无符号整型 4 区块中前一次交易的偏移量
nTxPrevTime 无符号整型 4 前一次交易的时间戳
nPrevoutNum 无符号整型 4 前一次交易的输出数字
nTimeTx 无符号整型 4 当前时间戳

有效的权益证明值的哈希结果必须低于区块目标。 矿工试图找到适合的解决方案,通过扫描所有可用还未使用的输入来找寻合适的CoinDayWeight。

生成一个POS区块的时间
与工作量证明类似,没有人有准确的答案,但是可以估计大概要花多长时间。计算方法也与POW类似,只要把哈希值换成coin * day-in-seconds,所以在1.0的难度下,找到一个区块需要~ 4294967297 coin * day-in-seconds的时间。

假设你有一个1 MH / s哈希速度的硬件,我们就可以估计一下,在目前42个币的工作证明难度下,生成工作量证明所需时间的平均值。

在一天内成功生成区块的可能性可以通过可用的CoinDayWeight利用公式计算出来:

P = CoinDayWeight * 86400 / (4294967297 *难度)

生成区块的平均时间计算公式::

T = 4294967297 * 难度 / (CoinDayWeight * 86400)

什么时候可以开始生成POS区块
只要有余额,42个币就会自动生成证明哈希值。

奖励
区块奖励为零,费用在PoS区块中会被销毁 – 这使得42个币成为通货紧缩的币种。

挖矿和区块链

挖矿是一个术语,指的是为42个币的区块链生成新的区块。 这个过程能够提供交易确认并保护运行历史。

区块头
区块头是一种元数据结构,用于连接区块链中的区块。区块头的大小为80个字节,包含下列6中字段:

字段 类型 大小 描述 更新时间
版本 无符号整型 4 区块头版本 更新软件后,就会指定一个新的版本号
前一区块的哈希值 无符号字符型 32 前一的哈希值,用来连接区块头和列表 接收新区块时
根节点的哈希值 无符号字符型 32 默克树的哈希值,用来连接区块头和区块内容 交易池更新时
时间戳 无符号整型 4 Unix时间戳 POW模式下每几秒更新一次,或每次成功尝试POS模式
当前目标的哈希值 无符号整型 4 压缩格式的证明难度 调整挖矿难度时
随机数 无符号整型 4 响应POW模式的尝试 尝试POW模式新的哈希值,从不使用POS模式

每个区块头都需满足所要求的证明。

工作机制
所有矿工在自己的交易池中都有一个副本,记录了全部未经确认的有效交易。通常挖矿分四个阶段进行:

·从交易池中获取交易集;

·为这组交易计算默克树哈希值;

·创建区块头模板并使用默克树哈希值将其与这组交易相关联;
·尝试为之前创建的区块头寻找合适的证明哈希。

什么能作为证明?
证明唯一必需的特性就是它很难获得,但验证却很容易。现存的有许多证明概念,如工作量证明、权益证明和燃烧证明。 42个币支持使用权益和工作量来为区块头提供合适的证据。

确认文件的例子
请注意,以下示例不适用于生产,它在这里只是辅助描述一些设置的目的。

# 42.conf configuration file. Lines beginning with # are comments. # Network-related settings: # Run on the test network instead of the real 42-coin network. #testnet=0 # Connect via a socks4 proxy - default none #proxy=127.0.0.1:9050 # Accepting incoming connections #listen=1 # Use as many addnode= settings as you like to connect to specific peers #addnode=193.23.181.148 #addnode=91.235.143.61:4242 # ... or use as many connect= settings as you like to connect ONLY # to specific peers: #connect=193.23.181.148 #connect=91.235.143.61:4242 #Maximum number of inbound+outbound connections. #maxconnections= # JSON-RPC options (for controlling a running 42d process) # You must set rpcuser and rpcpassword to secure the JSON-RPC api #rpcuser=Ulysseys #rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED # How many seconds 42-coin will wait for a complete RPC HTTP request after the HTTP connection is established.  #rpctimeout=30 # By default, only RPC connections from localhost are allowed.  Specify as many rpcallowip= settings as you like to allow connections from other hosts (and you may use * as a wildcard character): #rpcallowip=10.1.1.34 #rpcallowip=192.168.1.* # Listen for RPC connections on this TCP port: #rpcport=2121 # You can use 42d to send commands to 42d running on another host using this option: #rpcconnect=127.0.0.1 # Use Secure Sockets Layer (also known as TLS or HTTPS) to communicate with 42d #rpcssl=1 # OpenSSL settings used when rpcssl=1 #rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH #rpcsslcertificatechainfile=server.cert #rpcsslprivatekeyfile=server.pem # Miscellaneous options # Pre-generate this many public/private key pairs, so wallet backups will be valid for both prior transactions and several dozen future transactions. #keypool=100 # Data directory path, your keys store, copy of blockchain and unspent outputs index are stored here. #datadir=D:42 # Wallet file name #wallet=wallet.dat # Checkpoints policy (possible values are strict and advisory) #cppolicy=strict # Require confirmations for change (disabled by default) #confchange=0 # Enforce transaction scripts to use canonical PUSH operators enforcecanonical=1 

42个币的交换和市场

.co.nz: 42/BTC, 42/DOGE, 42/LTC – 存款确认: 200 个区块, 交易费: 0.2%, 取款费: 0.00000002, 最小交易量: 0.00005 BTC

LiveCoin.net: 42/BTC, 42/USD, 42/ETH – 存款确认: 8 个区块, 交易费: 0.2-%, 取款费: 0.000001, 最小交易量: 0.0001 BTC

TradeSatoshi.com: 42/BTC, 42/BCH, 42/LTC, 42/DOGE – 存款确认: 12 个区块, 交易费: 0.2%, 取款费: 0.00000002, 最小交易量: 0.000005 BTC

CoinsMarkets.com: 42/BTC – 存款确认: ? 个区块, 交易费: 0.25%, 取款费: 0.00000003, 最小交易量: 0.00001 42

NovaExchange.com: 42/BTC, 42/DOGE, 42/ETH, 42/LTC, 42/MOON, 42/KIC – 存款确认: 40 个区块, 交易费: 0.2%, 取款费: 0.00000001, Minimum trade: 0.0000002 BTC

链接

另请参阅 BitcoinWiki