因子挖矿
A. 鍖哄潡閾炬寲鐭跨畻娉曟湁鍑犵嶅憿
SHA-256锛歋HA鏄鎸囧畨鍏ㄦ暎鍒楃畻娉曪紝SHA-256鏄鐢盢SA璁捐$殑SHA-2鍔犲瘑鏁e垪鍑芥暟鐨勬垚鍛樸傚姞瀵嗘暎鍒楀嚱鏁版槸瀵规暟瀛楁暟鎹杩愯岀殑鏁板﹁繍绠楋紝閫氳繃灏嗘墍璁$畻鐨勨滄暎鍒椻濅笌宸茬煡鐨勬暎鍒楀艰繘琛屾瘮杈冿紝浜轰滑鍙浠ョ‘瀹氭暟鎹鐨勫畬鏁存с 鍗曞悜鏁e垪鍙浠ヤ粠浠绘剰鏁版嵁鐢熸垚锛屼絾涓嶈兘浠庢暎鍒楃敓鎴愭暟鎹銆傚湪姣旂壒甯佺瓑澶氫釜鍖哄潡閾炬瘮濡備腑鐨勫氫釜鐜鑺傝浣跨敤銆傛瘮濡傦細Bitcoin(BTC)銆丅itcoinCash(BCH)銆丳eercoin(PPC)銆乑etacoin(ZET)銆乁niversal(UNIT)銆丏eutsche eMark(DEM)銆丄UR-SHA(AUR)銆丏GB-SHA(DGB)銆係crypt锛歋crypt鏄涓涓鍐呭瓨渚濊禆鍨嬬殑hash绠楁硶銆傛湁瓒g殑鏄绠楁硶鏄鐢辫憲鍚嶇殑FreeBSD榛戝Colin Percival涓轰粬鐨勫囦唤鏈嶅姟Tarsnap寮鍙戠殑銆傚唴瀛樹緷璧栭【鍚嶆濅箟浼氬崰鐢ㄥ緢澶氬唴瀛樼┖闂达紝浠庤屽噺灏慶pu璐熻嵎銆傜敱浜庡叾鍐呭瓨渚濊禆鐨勮捐$壒鍒绗﹀悎褰撴椂瀵规姉涓撲笟鐭挎満鐨勮捐★紝鎴愪负鏁板瓧璐у竵绠楁硶鍙戝睍鐨勪竴涓涓昏佹瘮濡傛柟鍚戙傛瘮濡傦細Litecoin(LTC)銆丏ogecoin(DOGE)銆丏Notes(NOTE)銆丗lorin(FLO)銆丟ulden(NLG)銆丏GB-Scrypt(DGB)銆丟ameCredits(GAME)銆乂erge-Scrypt(XVG)銆丒insteinium(EMC2)銆丄UR-Scrypt(AUR)銆俋11锛 X11绠楁硶鐨勬帹鍑哄拰litecoin閲囩敤鐨凷crypt绠楁硶鐩鐨勪竴鏍凤紝涓轰簡鎶靛埗ASIC鐭挎満鐨勬墿寮犮俋11灏辨槸浣跨敤浜11绉嶅姞瀵嗙畻娉曪紙BLAKE, BMW, GROESTL, JH, KECCAK, SKEIN, LUFFA, CUBEHASH, SHAVITE, SIMD, ECHO锛夈傛暟鎹闇瑕佽繘琛11娆′笉鍚岀畻娉曠殑杩愮畻锛屼竴鏂归潰鎻愰珮瀹夊叏鎬т竴鏂归潰澧炲姞璁$畻閲忋傛瘮濡傦細Dash(DASH)銆丳rime-XI(PXI)銆丱nix(ONX)銆丼tartcoin(START)銆丆reamcoin(CRM)銆両nfluxcoin(INFX)銆丮onetaryUnit(MUE)銆丮onoeci(XMCC)銆侲quihash锛欵quihash鏄鐢卞崲妫鍫″ぇ瀛﹁法瀛︾戜腑蹇冨紑鍙戠殑闈㈠悜鍐呭瓨鐨勫伐浣滈噺璇佹槑(PoW)绠楁硶銆傜畻娉曠殑鏍稿績鐐规槸鍩轰簬骞夸箟鐢熸棩闂棰(Generalized Birthday Problem)銆傛垜涓浜烘槸姣旇緝鐪嬪ソ杩欎釜绠楁硶鐨勶紝浠栨彁楂樹簡瀹氬埗纭浠(ASIC)鐨勬垚鏈鏁堢泭銆傛瘮濡傦細Zcash(ZEC)銆乑encash(ZEN)銆丅itcoinGold(BTG)銆乑classic(ZCL)銆丠ush(HUSH)銆並omodo(KMD)銆俆ensority锛歍ensority鏄涓绉嶆柊鍨嬬殑PoW鍏辫瘑绠楁硶锛岀敱姣斿師閾剧巼鍏堟彁鍑猴紝灏嗙煩闃靛拰寮犻噺璁$畻铻嶅叆鍒板叡璇嗙畻娉曡繃绋嬩腑锛屼粠鑰屽疄鐜癆I鍔犻熻姱鐗囧彲浠ュ弬涓庡尯鍧楅摼鍏辫瘑璁$畻銆俆ensority鍏辫瘑绠楁硶鐨勭壒鑹插湪浜庣畻娉曡繃绋嬩腑绌挎彃浜嗗緢澶氱殑鐭╅樀鐢熸垚锛岀煩闃靛彉鎹锛岀煩闃典箻娉曠瓑杩愮畻锛岃岃繖浜涜兘鍔涘湪浜哄伐鏅鸿兘鍔犻熶腑涔熶細棰戠箒浣跨敤锛屽悓鐞嗗彲寰楋紝鏀鎸佺煩闃佃繍绠楃殑鐭挎満鍙浠ョ敤浣滀汉宸ユ櫤鑳界殑鍔犻熸湇鍔★紝浠ユゆ潵鎻愬崌鐭挎満鐨勮祫婧愬埄鐢ㄧ巼銆傛瘮濡傦細Bytom(BTM)銆丷RChain(RRC)銆侼eoScrypt锛歂eoScrypt鏄鏇夸唬Scrypt鐨勪笅涓浠e伐浣滈噺楠岃瘉绠楁硶銆 瀹冩秷鑰楃殑鍐呭瓨灏戜簬鍚庤咃紝浣嗗唴瀛樻洿瀵嗛泦锛屽瘑鐮佹洿寮恒 灏嗘祦瀵嗙爜绠楁硶Salsa20锛孲alsa20鏀硅壇鐨凜haCha20锛孊LAKE2s鍜孎astKDF鐨勫姛鑳界粨鍚堝埌涓涓瀹夊叏鐨凙SIC鎶楁цВ鍐虫柟妗堜腑銆傛瘮濡傦細GoByte(GBX)銆両nnova(INN)銆乀rezarcoin(TZC)銆乂ivo(VIVO)銆丆rowdcoin(CRC)銆丳hoenixcoin(PXC)銆侺yra2REv2锛歏ertcoin浣跨敤Lyra2REv2浣滀负宸ヤ綔閲忚瘉鏄庣畻娉曟敼杩汢itcoin锛岀洰鐨勫悓鏍蜂篃鏄涓轰簡鎶垫姉ASIC銆俈ertcoin鍚慡crypt绠楁硶寮曞叆浜嗏滆嚜閫傚簲N鍥犲瓙鈥濄 Scrypt鐨凬鍥犲瓙缁勪欢鍐冲畾璁$畻鏁e垪鍑芥暟闇瑕佸氬皯鍐呭瓨銆 Vertcoin鐨凬鍥犲瓙闅忕潃鏃堕棿鐨勬帹绉昏屽炲姞锛屼互闃绘㈠紑鍙戜笓鐢ㄧ殑鈥滈噰鐭库濈‖浠跺苟榧撳姳鍦ㄤ釜浜虹敤鎴风殑鐢佃剳涓婂垎鍙戦獙璇佷换鍔°傜洰鍓嶇殑LyraREv2鐢盉LAKE, Keccak, CubeHash, Lyra2,Skein 鍜 Blue Midnight Wish 鍝堝笇绠楁硶缁勬垚銆傛瘮濡傦細Vertcoin(VTC)銆丮onacoin(MONA)銆乂erge-Lyra2REv2(XVG)銆侲thash锛欵thash灏咲AG锛堟湁鍚戦潪寰鐜鍥撅級鐢ㄤ簬宸ヤ綔閲忚瘉鏄庣畻娉曪紝閫氳繃鍏变韩鍐呭瓨鐨勬柟寮忛樆姝涓撶敤鑺鐗囷紝闄嶄綆鐭挎満鐨勪綔鐢ㄣ 杩欎釜绠楁硶鏄浠ュお鍧(Ethereum)鐜伴樁娈电殑杩囧害绠楁硶锛屽墠韬鏄疍agger-Hashimoto銆侰asper the Friendly Finality Gadget(FFG)瀹炵幇鍚庝互澶鍧婂皢浠庢傜巼鏈缁堟у彉鎴愮‘瀹氭渶涓鎬с傛瘮濡傦細Ethereum(ETH)銆丒thereumClassic(ETC)銆丳irl(PIRL)銆丮usicoin(MUSIC)銆丒xpanse(EXP)銆丮etaverse(ETP)銆俋11Gost锛氫粙缁嶏細x11GOST鐢10涓猄HA3绠楁硶鍜孲tribog鍝堝笇鍑芥暟缁勬垚 鏁e垪鍊硷紝鍚勪釜绠楁硶閫愪釜杩涜岃$畻鏈夋晥鐨勯槻姝浜咥SIC鐨勮幏鑳滄傜巼銆傛瘮濡傦細Sibcoin(SIB)銆侰ryptoNight锛欳ryptoNight鏄涓绉嶅伐浣滆瘉鏄庣畻娉曘 瀹冭璁捐′负閫傜敤浜庢櫘閫氱殑PC CPU锛屽埄鐢ㄧ幇鏈塩pu鐨勪紭鍔匡紙鏈鍦癆ES鍔犲瘑鍜屽揩閫64浣嶄箻娉曞櫒 - 璋冩暣涓轰娇鐢ㄤ笌鑻辩壒灏擟PU涓婄殑姣忔牳蹇冧笁绾ч珮閫熺紦瀛樺ぇ灏忕浉褰撶殑鏆傚瓨鍣锛屽ぇ绾2MB锛夛紝鍥犳CryptoNight鍙鑳借繘琛孋PU鎸栨帢锛岀洰鍓嶆病鏈変笓闂ㄧ殑閲囩熆璁惧囬拡鍏跺仛鍑鸿捐° CryptoNight渚濊禆闅忔満璁块棶鎱㈤熷唴瀛樺苟寮鸿皟寤惰繜渚濊禆鎬э紝姣忎釜鏂板潡閮藉彇鍐充簬鎵鏈変互鍓嶇殑鍧楋紙涓嶅儚scrypt锛夈傛瘮濡傦細Dinastycoin(DCY)銆丏inastycoin(DCY)銆丒lectroneum(ETN)銆並arbo(KRB)銆丅ytecoin(BCN)銆丮onero(XMR)銆侭lake(14r)锛欱LAKE鍜孊LAKE2鏄鍩轰簬Dan Bernstein鐨凜haCha娴佸瘑鐮佺殑瀵嗙爜鏁e垪鍑芥暟锛屼絾鏄鍦ㄦ瘡涓狢haCha鍥炲悎涔嬪墠娣诲姞涓涓杈撳叆鍧楃殑鎺掑垪鍓鏈锛屽叾涓鍖呭惈涓浜涘父閲忓紓鎴栥侭LAKE鐨勪袱涓涓昏佸疄渚嬫槸BLAKE-256鍜孊LAKE-512銆 瀹冧滑鍒嗗埆浣跨敤32浣嶅拰64浣嶅瓧锛屽苟鐢熸垚256浣嶅拰512浣嶆憳瑕併傛瘮濡傦細Decred(DCR)銆
鎴戜滑閫氳繃浠ヤ笂鍏充簬鍖哄潡閾炬寲鐭跨畻娉曟湁鍑犵嶅憿鍐呭逛粙缁嶅悗,鐩镐俊澶у朵細瀵瑰尯鍧楅摼鎸栫熆绠楁硶鏈夊嚑绉嶅憿鏈変竴瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
B. 比特币使用教程
比特币是一种建立在全球网络上的货币。
比特币是一种没有央行参与发行的,总量固定的数字货币。
比特币建立在全球的P2P网络上。
全球无数的P2P节点全天候的在维护着比特币的网络。
英文:bitcoin 货币符号: 英文缩写:BTC或 XBT。
维基网络对比特币的介绍:
Bitcoin与传统货币不同,比特币运行机制不依赖中央银行、政府、企业的支持或者信用担保,而是依赖对等网络中种子文件达成的网络协议,去中心化、自我完善的货币体制,理论上确保了任何人、机构、或政府都不可能操控比特币的货币总量,或者制造通货膨胀。它的货币总量按照设计预定的速率逐步增加,增加速度逐步放缓,并最终在2140年达到2100万个的极限。
为什么要使用比特币?
全球交易畅通无阻。
比特币费用低廉。
比特币易于携带,在全球范围内交易畅通无阻,全世界很多地方都接受比特币。
去中心化。
比特币的发行由整个P2P网络完成,不受任何组织和个人控制,是一个完全去中心化的货币系统。
比特币的发行数量是固定的,不会因通胀而贬值,就像黄金一样。
如何使用比特币钱包?
我们从三个方面来说明这个问题。
一:什么是比特币钱包?
简单来说,比特币钱包可以让你和整个世界进行交易。利用比特币钱包中生成的比特币地址你可以接收来自他人的比特币,你也可以将你帐户上的比特币转到他人的比特币地址上面。比特币地址就像银行卡号一样,你只有知道别人的比特币地址才能进行比特币转账。比特币钱包中保存着你自己的所有比特币地址和私钥信息。
二:什么是比特币地址和私钥?
比特币地址和私钥是成对出现的,他们的关系就像银行卡号和密码。比特币地址就像银行卡号一样用来记录你在该地址上存有多少比特币。你可以随意的生成比特币地址来存放比特币。每个比特币地址在生成时,都会有一个相对应的该地址的私钥被生成出来。这个私钥可以证明你对该地址上的比特币具有所有权。我们可以简单的把比特币地址理解成为银行卡号,该地址的私钥理解成为所对应银行卡号的密码。只有你在知道银行密码的情况下才能使用银行卡号上的钱。所以,在使用比特币钱包时请保存好你的地址和私钥。
三:比特币地址和私钥的格式
比特币地址是一段由数学算法生成的二十七到三十四位长度的字符串,一般以数字“1”或者“3”开头。每个比特币地址都对应着一个比特币私钥。比特币私钥亦是由一串字符组成,一般以数字“5”开头。私钥保证了你对该比特币地址上比特币的所有权。比特币私钥有不同的格式,详细资料读者可参见下面的基础教学内容。
请注意
比特币的私钥可以生成该私钥对应的比特币地址,但是比特币地址不能计算出该地址所对应的私钥。因此,假如你忘记了私钥而只记得比特币地址,那么该地址上的比特币便不属于你了。所以,一定要备份好比特币钱包,保护好私钥。如何生成比特币地址和私钥呢?你可以用比特币钱包来生成任意数量的地址和私钥。当然,也有离线生成比特币地址和私钥的比特币钱包工具(关于钱包的概念详见后面的基础教学)。
比特币钱包的种类有哪些?
比特币常用的钱包有三种:软件钱包、手机钱包、在线钱包。
软件钱包:通常指可以在本地机子上运行的比特币客户端。使用软件钱包是最安全的保护你比特币的方式。
手机钱包:只装在手机上的比特币钱包,用手机钱包你可以随时随地的使用比特币。
在线网络钱包:让你可以在任何地方使用比特币,在线服务提供商帮助你保护你的比特币安全。但是值得注意的是,你要仔细谨慎的选择你的在线钱包提供商。
常用软件钱包介绍:
①Bitcoin-Qt:
是最早的比特币客户端,比特币初期的骨干网络就是建立在它上面的。它提供了最高级别的安全性,隐私性和稳定性。然而,它具有的功能并不多。
②Multibit:
是一个轻量级的客户端。Multibit专注于便捷和易用。它与网络同步是在几分钟内就可以使用。Multibit还支持多语言。对于非技术用户,这是一个不错的选择。
③Electrum:
和Multibit类似,Electrum是一款基于SPV原理的比特币钱包软件客户端,它能在几分钟之内完成同步。不同的是Electrum采用了和Bitcoin-qt和Multibit不同钱包的找零机制,所有的比特币私钥都由安全密码种子生成,因此他的安全性更高。Electrum适合对比特币技术原理已经有一定了解的玩家使用。
④Armory:
Armory客户端是运行于Bitcoin-Qt客户端之上的高级比特币客户端,为高级用户提供了更多的扩展功能,其中包括了很多关于备份和加密的功能,以及非常安全的线下冷存储。和Electrum一样,Armory适合对比特币有一定了解的用户使用。
常用的手机钱包介绍:
Bitcoin Wallet:
Bitcoin Wallet可以在Googleandroid商店找到。它是一个轻量级的移动客户端,支持Android和黑莓系统。这个客户端并不需要在线才能工作。它支持QR码(二维码)扫描和NFC(近距离无线通信)。
常用的在线钱包介绍:
①Blockchain:
Blockchain是最早的比特币在线钱包提供商,它提供的功能最多,也非常可靠。您可以用它在全球免费付款。它支持在手机上或个电脑上使用。
②P2PBUCKS:
提示:为保证安全,Blockchain.info在线钱包的用户请使用GoogleAuthenticator或Yubikey等双因子认证方式登陆。 并定时从Blockchain上下载自己的钱包备份到本地电脑。
我是在 完美生活 卫星号上看到这篇文章哦,详细的你可以去关注一下:funinusa
C. 一文读懂流动性挖矿
什么是DeFi 的流动性挖矿?
目前DeFi 的流动性挖矿,主要是发生在以太坊区块链上的产品,它通过为以太坊上DeFi 产品提供流动性获得收益。简单来说,存入某些代币资产即可进行挖矿,之所以称为挖矿,也是沿用了比特币挖矿的行业说法。在Compound 上进行流动性挖矿,主要是在上面进行存入代币或借出代币等操作,从而获得COMP 治理代币的奖励。而COMP 代币代表了Compound 协议的治理权。COMP 持有人可以投票决定Compound 协议的发展方向。如果Compound 业务有价值,那么COMP 就有天然的治理价值。
流动性挖矿主要是通过提供代币资产,从而获得收益。简单来说,存入代币资产即可进行挖矿。流动性挖矿是一种促进去中心化加密货币流通的方式,目前 Combo的流动性挖矿,主要是发生在以太坊区块链上的产品, 它通过为COMB在DEX中提供流动性从而获得收益。
流动性挖矿获得哪些收益?
流动性挖矿的收益包括治理代币、交易费等。 流动性挖矿可以简单地通过存入代币获得被动收益 ,不过如果想获得更高收益,它需要管理,不同协议之间的收益率不同,即便是同一协议不同货币市场或代币池之间的收益也存在很大的差异。
流动性挖矿的收益取决于很多因素,由于每个时间段(每天或每周)发行的代币量是基本固定的,收益主要取决于奖励代币的价格、流动性本身的权重(影响因子决定)以及占流动性总量的比例等。
流动性挖矿的最大化收益
流动性挖矿可以通过杠杆化操作来最大化收益 ,当然,同时也会带来更大的风险。用户可以在同一协议内进行操作,也可以跨协议进行操作。
COMBO交易流动性挖矿
Combo聚合协议将设立流动性挖矿奖金池 ,用户可以将稳定币(USDT、USDC)、ETH等加密资产存入去中心化交易平台为Combo资金池提供流动性,从而获得COMB交易通证(staking token)。将COMB交易通证(staking token)在Combo质押平台进行质押,即可参与COMB流动性挖矿。
投入的资金越多,时间越长,获得的流动性挖矿池份额就越大。流动性挖矿奖励将根据流动性挖矿池份额进行瓜分流动性挖矿奖金池奖励。
流动性挖矿池份额=用户流动性挖矿代币参数/流动性挖矿代币总参数×100%
例如:Combo质押平台中有两个用户。Alice已质押100枚COMB交易通证(staking token),时间为10天;Bob已质押200枚COMB交易通证
(staking token),时间为5天;
Alice流动性挖矿staking token参数=100×10=1000
Alice的流动性挖矿池份额:1000/2000×100%=50%
Bob流动性挖矿staking token参数=200×5=1000
Bob流动性挖矿池份额:1000/2000×100%=50%
流动动性挖矿staking token总参数=1000+1000=2000
每次进行流动性挖矿都是独立,都会标志着它的开始时间。因此,如果进行了两笔质押挖矿,然后提款,则第一笔和第二笔可能有不同的奖金金额。
流动性挖矿示意图
流动性挖矿产物
在Combo协议中,COMB将作为Combo平台的流动性挖矿产物, 当COMB持有者使用Combo合成资产发行聚合协议,将其COMB作为抵押品进行抵押铸造生成合成资产或者交易合成资产时,COMB持有者即可根据抵押铸造合成资产流动性挖矿、交易合成资产流动性挖矿。用户还可以将其他加密资产在Combo聚合协议中进行质押参与质押挖矿机制获取COMB用户可以将DAI、USDC、ETH等加密资产存入DEX提供流动性,获得COMB交易通证后在COMB-Club平台进行质押,即可参与COMB流动性挖矿。
Combo以智能合约作为交易对手,有别于其他任何交易平台。这种独特的方法为用户提供了许多优势,如更易与链下资产进行价格匹配,以及有着无限的共享流动性!
D. 浼犲噈2鎬庝箞绂佹㈡寲鐭
1銆佹墦寮M2鍦ㄩ夐」涓鎵撳紑鍔熻兘璁剧疆鐐瑰嚮鎸栫熆鎺у埗锛岄殢鍚庝慨鏀圭熆鐭冲洜瀛愩侀噾鐭跨巼銆侀摱鐭跨巼銆侀搧鐭跨巼銆侀粦閾佺熆鐜囩殑鍙傛暟渚垮彲淇鏀规寲鐭垮嚑鐜囥
2銆佹兂璁╂寲鐭垮规槗涓鐐癸紝鍦ㄥ緱鍒扮熆鐭虫満鐜囬噷璁剧疆锛屽懡涓鏈虹巼璁剧疆鏁板瓧灏忎竴鐐癸紝鐩稿圭殑鏁板瓧瓒婂ぇ鏈虹巼瓒婂皬锛屾寲鐭挎満鐜囪剧疆涔熸槸涓鏍凤紝鐭跨煶绫诲瀷鏈虹巼閲岃剧疆锛屾瘡涓绉嶇熆鐭抽兘鎷ユ湁浠栫殑鏈虹巼.璁剧疆鐨勬暟瀛楄秺澶э紝鏈虹巼灏辫秺澶с
E. 详解比特币挖矿原理
可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。
比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。
至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。
通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。
在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。
在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:
交易的语法和数据结构必须正确。
输入与输出列表都不能为空。
交易的字节大小是小于MAX_BLOCK_SIZE的。
每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。
没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。
nLockTime是小于或等于INT_MAX的。
交易的字节大小是大于或等于100的。
交易中的签名数量应小于签名操作数量上限。
解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。
池中或位于主分支区块中的一个匹配交易必须是存在的。
对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。
对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。
对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。
对于每一个输入,引用的输出是必须存在的,并且没有被花费。
使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。
如果输入值的总和小于输出值的总和,交易将被中止。
如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。
每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。
以下挖矿节点取名为 A挖矿节点
挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。
验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。
A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。
一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。
然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。
如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。
在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。
UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。
区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。
A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。
用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。
需要以下参数
• block的版本 version
• 上一个block的hash值: prev_hash
• 需要写入的交易记录的hash树的值: merkle_root
• 更新时间: ntime
• 当前难度: nbits
挖矿的过程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。
简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。
如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?
比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。
为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。
举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。
每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。
比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。
节点维护三种区块:
· 第一种是连接到主链上的,
· 第二种是从主链上产生分支的(备用链),
· 第三种是在已知链中没有找到已知父区块的。
有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。
选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。
当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
分叉之前
分叉开始
我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。
假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。
比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。
分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。
所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。
比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
F. 传奇引擎挖矿几率设置
打开传奇服务端M2程序。
打开M2在选项中打开功能设置点击挖矿控制,随后修改矿石因子、金矿率、银矿率、铁矿率、黑铁矿率的参数便可修改挖矿几率。
如果想让挖矿容易一点,在得到矿石机率里设置,命中机率设置数字小一点,相对的数字越大机率越小,挖矿机率设置也是一样,矿石类型机率里设置,每一种矿石都拥有他的机率.设置的数字越大,机率就越大。