万象直播app破解版_欧美国产日韩无遮挡在线一区二区,亚洲国产综合精品中久,强奷白丝女仆在线观看,超碰三级大陆在线

您的位置:首頁(yè) > 軟件問答

全能鼠標(biāo)鍵盤記錄器(別忘了Windows自帶的錄屏軟件,超好用)

導(dǎo)讀全能鼠標(biāo)鍵盤記錄器文章列表:1、別忘了Windows自帶的錄屏軟件,超好用2、2021 年 10 大無(wú)代碼測(cè)試工具3、Win102004系統(tǒng)新版本24個(gè)新功能,看這篇文章就夠了4、BNC公鏈 | 比特幣

全能鼠標(biāo)鍵盤記錄器文章列表:

全能鼠標(biāo)鍵盤記錄器(別忘了Windows自帶的錄屏軟件,超好用)

別忘了Windows自帶的錄屏軟件,超好用

Windows平臺(tái)上好用的錄屏軟件可不少,猿仔簡(jiǎn)直如數(shù)家珍,譬如老牌的KK錄像機(jī)、 Bandicam、OBS Studio等等。不過,猿仔也要提醒大家,Windows 10系統(tǒng)上也自帶了一個(gè)超好用的錄屏軟件,你不用再去下載第三方錄屏軟件啦。

1、使用 Win G 組合快捷鍵,打開Win10錄屏功能,大家可以在錄制游戲的時(shí)候,使用這個(gè)組合快捷鍵,在彈出的錄制小框中,點(diǎn)擊「是的,這是一個(gè)游戲」。

對(duì),沒錯(cuò),因?yàn)閃indows 10這個(gè)自帶錄屏軟件是內(nèi)置Xbox游戲平臺(tái)的Xbox工具欄。當(dāng)然,Win10 最新的版本比前期的版本豐富了不少功,可不止截圖和錄屏功能,還有電腦的性能、音頻設(shè)置,Xbox 社交及成就等。當(dāng)然此次主要介紹的是其錄屏功能。

2、之后就出現(xiàn)了Win10錄屏軟件主界面了,直接點(diǎn)擊“圓圈”進(jìn)行錄制視頻,如下圖所示,右邊的“麥克風(fēng)”標(biāo)志則表示是否要開啟電腦的麥克風(fēng)進(jìn)行錄制。

3、錄制后的視頻默認(rèn)保存在電腦的「視頻」-「捕獲」中,當(dāng)然你可以通過設(shè)置修改路徑位置。

如果設(shè)置把「將其記為游戲」勾選,后面再次開啟錄屏就不會(huì)有第一步的提示,直接開啟錄屏。還有其它選項(xiàng)都在“設(shè)置”里面調(diào)試,包括快捷方式、主題顯示等等。

另外,Win10自帶錄屏鍵盤的快捷方式如下:

Windows 徽標(biāo)鍵 G:打開游戲錄制工具欄

Windows 徽標(biāo)鍵 Alt G:錄制最后若干時(shí)刻的游戲活動(dòng)(您可以在“游戲錄制工具欄”>“設(shè)置”中更改錄制的時(shí)間量。)

Windows 徽標(biāo)鍵 Alt R:開始/停止錄制

Windows 徽標(biāo)鍵 Alt Print Screen:拍攝您游戲的屏幕截圖

Windows 徽標(biāo)鍵 Alt T:顯示/隱藏錄制計(jì)時(shí)器

Windows 徽標(biāo)鍵 Alt M:開始/停止麥克風(fēng)錄制

以上便是Windows 10自帶的錄屏軟件,簡(jiǎn)單易用,大家別錯(cuò)過呦!

有的小伙伴可能會(huì)說(shuō)那如果使用的是win7/8 有無(wú)自帶的錄屏軟件呢?也是有的,不過錄的可不是視頻,只是一個(gè)步驟記錄器,每點(diǎn)擊一次鼠標(biāo),記錄器就會(huì)做一次截屏,并以圖片的形式保存下來(lái)。功能比較弱~

1、按下WIN R快捷鍵,然后輸入psr.exe,打開問題步驟記錄器。

2、現(xiàn)在就可以開始錄屏操作了。點(diǎn)擊開始錄制,便處于錄制狀態(tài),程序可以監(jiān)視鼠標(biāo)在屏幕上的操作并記錄下來(lái)。

3、錄制完畢后,點(diǎn)擊右側(cè)的小三角,選擇設(shè)置,可以設(shè)置保存路徑。選擇好自己的保存路徑點(diǎn)擊確定即可。

所以使用Win 10以下版本系統(tǒng)的用戶,猿仔建議還是使用第三方的錄屏軟件。好用的錄屏軟件不少,但是大多正版錄屏軟件都要收費(fèi),否則就只能試用幾次又或者導(dǎo)出錄制視頻就會(huì)有水印,對(duì)吧?

當(dāng)然了,Win 10自帶錄屏軟件對(duì)桌面錄制的支持并不友好,那么如果你需要到桌面錄制,那么我推薦一款第三方免費(fèi)錄屏軟件,「EV錄屏」,目前官方是承諾基礎(chǔ)的錄屏功能功能是“永久免費(fèi)”的,從軟件從業(yè)者的角度講,算是很良心了。當(dāng)然其它一些白板功能、實(shí)時(shí)按鍵功能則是要收費(fèi),這個(gè)要看大家有無(wú)需求進(jìn)行選擇即可,一般來(lái)說(shuō)只用它的免費(fèi)錄屏功能即可。單純作為一款免費(fèi)的錄屏軟件,很實(shí)用的。

2021 年 10 大無(wú)代碼測(cè)試工具

隨著技術(shù)進(jìn)步,以及 DevOps 和 Agile (敏捷開發(fā))的到來(lái),軟件測(cè)試行業(yè)正在見證著無(wú)數(shù)的變化。軟件測(cè)試經(jīng)歷了從手動(dòng)測(cè)試到記錄和回放復(fù)雜測(cè)試工具,再到測(cè)試自動(dòng)化,再到無(wú)代碼自動(dòng)化測(cè)試的漫長(zhǎng)演進(jìn)。

《2020-2021 年世界質(zhì)量報(bào)告》指出,在將自動(dòng)化測(cè)試應(yīng)用于敏捷項(xiàng)目時(shí),沒有先進(jìn)的編程知識(shí)和專業(yè)知識(shí)被認(rèn)為是關(guān)鍵挑戰(zhàn)之一?;蛟S無(wú)代碼測(cè)試工具是應(yīng)對(duì)此挑戰(zhàn)的希望。

此篇文章將帶您了解 2021 年頂級(jí)無(wú)代碼測(cè)試工具。但是,在開始之前,讓我們了解無(wú)代碼自動(dòng)化測(cè)試的內(nèi)容和原因。

什么是無(wú)代碼自動(dòng)化測(cè)試?

無(wú)代碼自動(dòng)化測(cè)試旨在不使用任何腳本的情況下執(zhí)行自動(dòng)化測(cè)試。對(duì)于 QA 工程師來(lái)說(shuō)編寫自動(dòng)化腳本具有挑戰(zhàn)性,而且需要用適當(dāng)?shù)木幊陶Z(yǔ)言編寫測(cè)試代碼費(fèi)時(shí)費(fèi)力。

使用無(wú)代碼自動(dòng)化測(cè)試,可以最大限度地減少重復(fù)測(cè)試用例的測(cè)試時(shí)間,而無(wú)需任何編碼工作。市場(chǎng)上有許多無(wú)代碼測(cè)試工具,它們包含一組內(nèi)置功能,無(wú)需任何復(fù)雜的編碼。一些重要的功能包括:

拖放界面

錄制和回放

機(jī)器學(xué)習(xí)或人工智能技術(shù)的集成

低維護(hù)量

為什么要考慮無(wú)代碼自動(dòng)化測(cè)試?

執(zhí)行無(wú)代碼自動(dòng)化測(cè)試并非完全無(wú)代碼;在軟件測(cè)試過程中實(shí)現(xiàn)無(wú)代碼測(cè)試自動(dòng)化也需要考慮如下原因:

無(wú)代碼測(cè)試有助于團(tuán)隊(duì)的成本投入,能輕松應(yīng)對(duì)測(cè)試。

無(wú)代碼自動(dòng)化測(cè)試工具增加了測(cè)試覆蓋率。

借助無(wú)代碼自動(dòng)化,可輕松應(yīng)付復(fù)雜的測(cè)試腳本的變更和管理。

無(wú)代碼測(cè)試是自動(dòng)化測(cè)試場(chǎng)景的快速方法。

無(wú)代碼測(cè)試具有友好的用戶界面。

無(wú)代碼測(cè)試具有成本效益。

2021 年最佳無(wú)代碼測(cè)試工具

讓我們探索最流行的無(wú)代碼測(cè)試工具,幫助 QA 專家踏上無(wú)代碼測(cè)試自動(dòng)化之旅!

1.Katalon Studio

Katalon Studio 被列為 2020 年頂級(jí)無(wú)代碼測(cè)試工具之一。Katalon Studio可廣泛適用桌面、移動(dòng)、Web、API 等應(yīng)用程序的測(cè)試。其特點(diǎn)是易于使用,最適合經(jīng)驗(yàn)豐富的初級(jí) QA 工程師。

Katalon 為測(cè)試專家和業(yè)務(wù)用戶提供了可訪問的界面。拖放命令、記錄和回放等功能使其成為完美的無(wú)代碼自動(dòng)化測(cè)試工具。QA 工程師可以輕松導(dǎo)入外部測(cè)試庫(kù)并允許該工具執(zhí)行實(shí)施,從而避免從頭開始構(gòu)建框架。

核心特點(diǎn):

需要最少的編程技能

支持 API、Web、桌面和移動(dòng)自動(dòng)化測(cè)試

帶有內(nèi)置的測(cè)試用例庫(kù)、項(xiàng)目模板、對(duì)象存儲(chǔ)庫(kù)和關(guān)鍵字

支持著名的持續(xù)集成工具的原生插件

能夠定位對(duì)象中的修改并因此創(chuàng)建測(cè)試

強(qiáng)大的錄制和回放功能

全面而強(qiáng)大的報(bào)告能力

支持內(nèi)置集成,如問題管理、通知和通信以及測(cè)試管理

2.LEAPWORK

LEAPWORK 是一個(gè)先進(jìn)的基于云的、無(wú)代碼的selenium 自動(dòng)化測(cè)試平臺(tái)。LEAPWORK支持多種形式的應(yīng)用程序的測(cè)試,包括 SAP、Windows 和 Web。借助 LEAPWORK,可以讓敏捷項(xiàng)目團(tuán)隊(duì)加快 QA 自動(dòng)化測(cè)試程序的開發(fā)和實(shí)施。

該工具專為桌面應(yīng)用程序和 Web 應(yīng)用程序而設(shè)計(jì),在構(gòu)建時(shí)考慮到了整個(gè)軟件開發(fā)團(tuán)隊(duì)。LEAPWORK 帶有用于自動(dòng)化的預(yù)定義構(gòu)建塊和默認(rèn)庫(kù),可幫助 QA 團(tuán)隊(duì)提高生產(chǎn)力并節(jié)省時(shí)間。

核心特點(diǎn):

能夠在不同的測(cè)試用例中重用自動(dòng)化流程

通過拖放構(gòu)建塊可視化流構(gòu)建器

縮短 QA 團(tuán)隊(duì)學(xué)習(xí)曲線的無(wú)代碼能力

支持跨瀏覽器測(cè)試和并行運(yùn)行

與當(dāng)前的 DevOps 工具集輕松集成

用于捕獲測(cè)試步驟并自動(dòng)運(yùn)行這些捕獲的智能記錄器

能夠管理海量數(shù)據(jù)并支持各種數(shù)據(jù)源

3. Ranorex Studio

Ranorex Studio 是一種通用且最受歡迎的無(wú)代碼測(cè)試工具,適用于專業(yè)人士和初學(xué)者。Ranorex Studio 可以自動(dòng)化測(cè)試移動(dòng)、基于 Web 和桌面應(yīng)用程序,而無(wú)需腳本語(yǔ)言來(lái)自動(dòng)化應(yīng)用程序。Ranorex 主要使用 C# 和 VB.NET 等編程語(yǔ)言。

可拖放用戶界面對(duì)象、捕獲和重放,也可使用代碼模塊自動(dòng)工具來(lái)進(jìn)行回歸測(cè)試。Ranorex 還允許測(cè)試人員生成可維護(hù)且有效的模塊化自動(dòng)化腳本,而無(wú)需考慮編程知識(shí)。Ranorex 核心 API 與 Se (selenium) WebDriver 合并;因此,大多數(shù)人員可以輕松在 Selenium Grid 上進(jìn)行跨瀏覽器測(cè)試。

核心特點(diǎn):

跨平臺(tái)測(cè)試,移動(dòng)、Web 和桌面環(huán)境

記錄和重放用戶的通信以生成可重用的腳本,可以使用其動(dòng)作編輯器進(jìn)行修改

測(cè)試腳本可以在特定測(cè)試用例的命令之間運(yùn)行

RanoreXPath 技術(shù)可以識(shí)別應(yīng)用程序的UI組件

獨(dú)家監(jiān)視引擎可跟蹤屏幕上用戶界面組件的描述

將圖像與直接上傳軟件中的可接受圖像進(jìn)行比較和確認(rèn)

與 Azure DevOps、JIRA、Bugzilla、TestRail、Git、Jenkins 等集成,因此可以輕松構(gòu)建完整的自動(dòng)化測(cè)試工具鏈

4.TestCraft

這是最令人佩服的無(wú)代碼測(cè)試工具之一,TestCraft作為 E2E(端到端)測(cè)試自動(dòng)化平臺(tái)引入,用于連續(xù)和回歸測(cè)試。同樣具有具有記錄和回放功能,該工具還提供了測(cè)試腳本,其中包含事先編碼的輸入,之后必須進(jìn)行修改。調(diào)整一些代碼可能會(huì)破壞測(cè)試腳本。

因此,智能綁定被稱為智能組件定位器,可以立即捕獲多個(gè)屬性,如位置、ID、文本大小或值。這些屬性也可在運(yùn)行期間彈出以進(jìn)行修改。

核心特點(diǎn):

通過在應(yīng)用程序準(zhǔn)備之前生成測(cè)試場(chǎng)景來(lái)提供敏捷性

支持多數(shù)據(jù)集并行實(shí)現(xiàn)

立即綁定以適應(yīng)大多數(shù)應(yīng)用程序更改

流和元素可以跨場(chǎng)景重用。

每個(gè)測(cè)試操作的智能分析和報(bào)告

大量?jī)?nèi)置集成,如問題管理、測(cè)試管理、通知和通信

5.Selenium IDE

Selenium IDE 自動(dòng)化工具允許使用 Selenium 提供的所有內(nèi)容自動(dòng)化 Web 應(yīng)用程序,而無(wú)需編寫代碼。Selenium IDE 使用記錄和回放功能來(lái)支持無(wú)代碼自動(dòng)化測(cè)試。

Selenium IDE 可以通過插件進(jìn)行擴(kuò)展。它們將新命令引入 IDE 或與其他服務(wù)合并。Selenium IDE是一種易于使用、無(wú)代碼的自動(dòng)化測(cè)試工具,它提供即時(shí)反饋,并允許您使用SIDE(或Selenium IDE命令行)運(yùn)行程序,在任何操作系統(tǒng) 瀏覽器組合上運(yùn)行測(cè)試。這就是無(wú)代碼測(cè)試工具變得流行的原因,因?yàn)樗鼈儨p輕了測(cè)試人員的頭痛和關(guān)鍵挑戰(zhàn)。

核心特點(diǎn):

運(yùn)行特定測(cè)試或計(jì)算一組測(cè)試的整個(gè)測(cè)試套件

設(shè)置斷點(diǎn)和暫?;砻馐沟脧?IDE 調(diào)試測(cè)試變得簡(jiǎn)單而輕松

用于瀏覽器的自動(dòng)化測(cè)試,使用 Selenium SIDE 運(yùn)行器可實(shí)現(xiàn)跨瀏覽器測(cè)試

支持多個(gè)用于創(chuàng)建循環(huán)、插入等待、上升斷言等的命令

擁有一組通用的命令,可控制流結(jié)構(gòu)。比如,if..else、if 等命令有助于從 IDE 執(zhí)行條件測(cè)試

run 命令允許測(cè)試人員在另一個(gè)測(cè)試套件(或測(cè)試用例)中重用特定的測(cè)試用例

支持一組可執(zhí)行測(cè)試的 Selenese 命令(或一系列 Se 命令)

測(cè)試用例的無(wú)故障比較和修改:通過 IDE 生成的測(cè)試腳本存儲(chǔ)為 JSON 文件,以便于比較、更改和檢查測(cè)試

6.CloudQA

CloudQA 是一個(gè)強(qiáng)大的基于云的集成自動(dòng)

化測(cè)試平臺(tái),旨在針對(duì)多個(gè)瀏覽器并行地構(gòu)建、管理和實(shí)施測(cè)試。CloudQA 不僅僅是一個(gè)記錄和回放工具,它還為用戶提供了一個(gè)集成的報(bào)告工具,用于快速生成和安排回歸測(cè)試套件。

此工具提供了與 Selenium 相同的功能,無(wú)需高級(jí)編程知識(shí)。記錄的測(cè)試被放入可管理的模塊。即使是相同的測(cè)試也可以重復(fù)用于負(fù)載測(cè)試、回歸測(cè)試和綜合監(jiān)控。

核心特點(diǎn):

無(wú)需更改任何代碼即可提高綜合檢查的可重用性

在不同瀏覽器(例如 Mozilla Firefox、Internet Explorer、Chrome)上流暢地檢查多個(gè)數(shù)據(jù)集

的能力,可維持?jǐn)?shù)千次測(cè)試

智能記錄和回放測(cè)試,每一步后都有截圖

安排和執(zhí)行無(wú)人值守的測(cè)試

支持?jǐn)?shù)據(jù)驅(qū)動(dòng)的測(cè)試

可以通過 Slack、Asana、GitHub、JIRA 等第三方集成軟件來(lái)管理錯(cuò)誤

7.Perfecto

Perfecto 工具深受大型團(tuán)隊(duì)的信賴,是一款基于云的自動(dòng)化測(cè)試解決方案,適用于移動(dòng)和Web 自動(dòng)化測(cè)試的解決方案。Perfecto提供連任錯(cuò)誤分類的完整 AI 分析,用于優(yōu)化持續(xù)集成/持續(xù)交付管道。還為 Web 應(yīng)用程序和移動(dòng)測(cè)試提供了多種受支持的操作系統(tǒng)、瀏覽器和設(shè)備組合。

在 Perfecto 中,強(qiáng)大的 AI 驅(qū)動(dòng)綁定占應(yīng)用程序更改的 97.4%。其自我修復(fù)特性允許測(cè)試腳本運(yùn)行而無(wú)需任何持續(xù)的維護(hù)或中斷。其基于云的解決方案旨在確保無(wú)論出現(xiàn)任何市場(chǎng)問題,例如新的 Android 或 iOS 版本更新、新的瀏覽器或手機(jī)發(fā)布,它們都能正常運(yùn)行。盡管其許多功能復(fù)雜,但一旦上手將為團(tuán)隊(duì)增加復(fù)雜測(cè)試的可能性。

核心特點(diǎn):

智能分析和報(bào)告

AI驅(qū)動(dòng)的測(cè)試維護(hù)能力

增加測(cè)試復(fù)用性

調(diào)試能力和測(cè)試管理

在多個(gè) Android 小工具上無(wú)限可擴(kuò)展地并行執(zhí)行

加快測(cè)試程序并加快開發(fā)人員和質(zhì)量分析師之間的反饋

8.AccelQ

AccelQ 是一種基于人工智能的無(wú)代碼自動(dòng)化測(cè)試工具,滿足成為完美無(wú)代碼 selenium 自動(dòng)化工具的所有標(biāo)準(zhǔn)。AccelQ 可以以最少的精力和時(shí)間自動(dòng)化桌面、Web、大型機(jī)和其他應(yīng)用程序,從而加快測(cè)試周期。與其他無(wú)代碼測(cè)試工具不同,它的自動(dòng)修復(fù)特性和自然編碼使其在競(jìng)爭(zhēng)中與其他測(cè)試工具截然不同。

憑借簡(jiǎn)單且快速開發(fā)的用戶界面,使其與現(xiàn)有流行的 DevOps 和優(yōu)質(zhì)工具鏈相結(jié)合??蓴U(kuò)展和開源、自然語(yǔ)言編程、自動(dòng)測(cè)試生成和智能元素瀏覽器等特性使其在市場(chǎng)中受到歡迎。

核心特點(diǎn):

高度安全和可擴(kuò)展

能夠在類似的流程中輕松實(shí)現(xiàn)用戶界面和 API 的自動(dòng)化

為出色的視覺測(cè)試設(shè)計(jì)創(chuàng)建應(yīng)用程序藍(lán)圖

使用嵌入式框架快速開發(fā)和最少維護(hù)

用于生成測(cè)試場(chǎng)景的投影和路徑分析特征

通過數(shù)據(jù)流和模型 UI 最大化測(cè)試覆蓋率

持續(xù)集成就緒并允許沖刺自動(dòng)化

9. Sikuli

Sikuli 使用圖像識(shí)別技術(shù)運(yùn)行自動(dòng)化圖形用戶界面測(cè)試,以識(shí)別和管理圖形 UI 組件。它在使用 Se Webdriver 時(shí)也很有用,特別是在自動(dòng)化 Java 小程序和 Flash 對(duì)象時(shí),同時(shí) IDE 腳本增加了它們的功能。

與其他無(wú)代碼測(cè)試工具相比,在運(yùn)行時(shí)需要一個(gè)可見的應(yīng)用程序圖形用戶界面。因此,當(dāng)圖形用戶界面多次更改時(shí),Sikuli 無(wú)法同時(shí)執(zhí)行和維護(hù)多個(gè)腳本。

核心特點(diǎn):

支持多種平臺(tái),如 Linux、Mac 和 Windows

在像素級(jí)別記錄圖像以進(jìn)行用戶界面驗(yàn)證。

在不同的設(shè)備和模擬器上自動(dòng)測(cè)試。

與 Se (Selenium) 結(jié)合以實(shí)現(xiàn)桌面應(yīng)用程序的自動(dòng)化

記錄和回放各種動(dòng)作,例如鼠標(biāo)動(dòng)作和拖放

10.Mabl

Mabl 是為 CI/CD 構(gòu)建的智能無(wú)代碼測(cè)試自動(dòng)化工具。由于 Selenium WebDriver、Selenium IDE 以及其他測(cè)試自動(dòng)化工具等廣泛的 Web 瀏覽器自動(dòng)化覆蓋范圍,它將自動(dòng)化 E2E 測(cè)試很好地集成到完整的 SDLC(軟件開發(fā)生命周期)中。

通過切換到 Mabl,用戶可以在所有主流瀏覽器上并行執(zhí)行非 SDETS 穩(wěn)健測(cè)試。這有助于消除視覺設(shè)計(jì)、用戶體驗(yàn)測(cè)試和性能測(cè)試的障礙。通過在云中進(jìn)行管理,這最終會(huì)減少物理工作量、托管基礎(chǔ)設(shè)施以及自動(dòng)化測(cè)試的測(cè)試用例維護(hù)。

核心特點(diǎn):

新穎且先進(jìn)的用戶界面和設(shè)計(jì)方法

Mabl Trainer 瀏覽器插件可在幾分鐘內(nèi)針對(duì)應(yīng)用程序進(jìn)行功能測(cè)試設(shè)置。

將測(cè)試輸出更改為幾個(gè)事項(xiàng)(如 BigQuery、JIRA)

可以通過 BigQuery、JIRA 和電子郵件導(dǎo)出可操作的見解。

自動(dòng)修復(fù)特性使整個(gè)測(cè)試保持穩(wěn)定。

使用 Jenkins、Slack、Bamboo、JIRA 等工具輕松管理錯(cuò)誤。

附加工具:QMetry Automation Studio

QMetry Automation Studio 是一個(gè)自動(dòng)化平臺(tái),可幫助組織無(wú)縫地完成端到端的測(cè)試自動(dòng)化。在數(shù)字化轉(zhuǎn)型時(shí)代,QMetry利用?多種語(yǔ)言和框架來(lái)提高其適應(yīng)性。

它支持手動(dòng)用戶或初學(xué)者的部分無(wú)代碼自動(dòng)化,以及自動(dòng)化工程師的實(shí)現(xiàn)腳本擴(kuò)展和定制。

結(jié)論

無(wú)代碼測(cè)試工具的過多好處超過了自動(dòng)化測(cè)試的負(fù)面影響。他們最終在編碼功能方面節(jié)省了大量費(fèi)用和時(shí)間,并通過有利的測(cè)試覆蓋率來(lái)提高質(zhì)量。但是,這些工具需要更多的文檔、功能和模塊化??傊?,軟件測(cè)試人員更喜歡將無(wú)代碼測(cè)試自動(dòng)化作為敏捷開發(fā)過程的關(guān)鍵組件。這不會(huì)完全取代手動(dòng)自動(dòng)化測(cè)試,但會(huì)加速他們的工作。無(wú)代碼測(cè)試工具在2021年以其獨(dú)特的優(yōu)勢(shì)和需求仍在不斷成熟和壯大中。

Win102004系統(tǒng)新版本24個(gè)新功能,看這篇文章就夠了

今年首個(gè)Windows 10正式版更新于近日上架MSDN,版本號(hào)最終確定為Build 19041.208(v2004),這是一個(gè)RTM版本,也就是送到OEM廠商壓盤的正式版本,向用戶正式推送的時(shí)候不會(huì)再有什么功能變化。

按照微軟的一貫邏輯,上半年更新多以添加功能為主,下半年更新則以修復(fù)Bug為主。因此2004版其實(shí)是增加了很多新的變化的。出于穩(wěn)定性考慮,此次微軟并未大張旗鼓地宣傳,而是選擇悄悄上架到MSDN。估計(jì)針對(duì)普通用戶的大規(guī)模推送,怎么著也要等到5月28日以后了,這就來(lái)向大家介紹一下它有何新特性!

1、Win10不再“卡”

Win10 v1903加入了一項(xiàng)增強(qiáng)型搜索,使得Win10的搜索能力大大加強(qiáng)。但同時(shí)也出現(xiàn)了CPU占比高、磁盤占用飆升等問題。

Win10 v2004引入了一項(xiàng)全新的硬盤負(fù)載檢測(cè)機(jī)制,能夠自動(dòng)識(shí)別硬盤高峰使用時(shí)間,暫?;驕p緩Windows索引器工作。最直觀一個(gè)表現(xiàn),就是之前那種莫名其妙的硬盤燈狂亮現(xiàn)象將大為減少,尤其對(duì)那些暫時(shí)還沒升級(jí)到SSD的機(jī)械硬盤用戶來(lái)說(shuō),應(yīng)該是個(gè)好消息。

2、搜索面板小變化

搜索面板增加了一些新元素,最明顯的就是“發(fā)生了什么”和“推薦”兩個(gè)版塊。其中“發(fā)生了什么”顯示的是疫情通報(bào),后續(xù)估計(jì)會(huì)走熱點(diǎn)新聞的套路。而“推薦”則是自家的Chromium版Edge,當(dāng)然不排除會(huì)有其他軟件加入。

值得一提的是,Win10的這個(gè)疫情通報(bào)整體設(shè)計(jì)可圈可點(diǎn),采用的是數(shù)據(jù) 地圖的展示方式,數(shù)據(jù)點(diǎn)大小直接代表了確診人數(shù)多少,非常直觀。默認(rèn)會(huì)顯示當(dāng)前用戶所處國(guó)家,當(dāng)然你也可以手動(dòng)選擇其他國(guó)家的數(shù)據(jù)。

3、新版小娜Cortana

Cortana變化明顯,增加了很多對(duì)話邏輯,很多操作已經(jīng)不像老版那樣,動(dòng)不動(dòng)就要打開瀏覽器了。新界面采用的是分離式設(shè)計(jì),用戶可以像拖拽窗口一樣,將小娜拖拽到屏幕上的任意位置。除此之外,全新小娜還增加了夜間模式支持,而在此之前……是不行的!

目前這一版本僅限于美國(guó),如果你的區(qū)域選擇不是“美國(guó)”,同時(shí)默認(rèn)語(yǔ)言也不是“英語(yǔ)”的話,只能看到如下這個(gè)提示。當(dāng)然和其他手機(jī)語(yǔ)音助理相比,現(xiàn)階段的小娜依舊“很傻”!so,大家也不必過分眼氣了。

4、開始菜單UI

Win10 v2004版并未加入傳聞中的新版開始菜單,但UI配色已經(jīng)有所改變。當(dāng)你將微軟Office組件固定到開始菜單時(shí),會(huì)發(fā)現(xiàn)原本的圖標(biāo)底色已經(jīng)不復(fù)存在,轉(zhuǎn)而采用一種統(tǒng)一的黑灰調(diào)底色。特別是在配合全新的立體式圖標(biāo)時(shí),整體視覺感更加協(xié)調(diào)。

5、任務(wù)管理器新增“磁盤類型”

Win10 v2004在”任務(wù)管理器-性能”標(biāo)簽下,新增加了磁盤類型顯示(HDD/SSD),方便用戶直觀地識(shí)別硬盤類型。

6、顯示GPU溫度

除了磁盤類型以外,GPU溫度也是新版任務(wù)管理器的一個(gè)看點(diǎn),能夠直接給出顯卡工作溫度。不過目前這項(xiàng)功能覆蓋還不很全面,AMD及集成顯卡都不支持。即便是NV系的獨(dú)立顯卡,也需要對(duì)顯卡型號(hào)、驅(qū)動(dòng)版本、WDDM(需要升級(jí)到v2.4以上版本,通過Dxdiag查看)擁有很明確的要求。

7、安全模式新增Windows Hello支持

Win10 v2004優(yōu)化了無(wú)密碼登錄體驗(yàn),在“設(shè)置-賬戶-登錄選項(xiàng)”標(biāo)簽下,可以看到新增加的“需要通過Windows Hello登錄Microsoft賬戶”的選項(xiàng)。這項(xiàng)功能可讓用戶根據(jù)自身情況,決定是否啟用Windows Hello(指紋、面部、虹膜、Pin等)來(lái)登錄Win10系統(tǒng)。此外安全模式也首次支持Windows Hello。

8、XBOX Bar新增社交面板

XBOX Bar新增加了社交面板,可以讓用戶在游戲之余,更方便地與好友溝通。此外新增加的“小組件商店”也算一個(gè)亮點(diǎn),能夠像應(yīng)用商店一樣自由下載組件。

9、虛擬桌面重命名

虛擬桌面支持重命名,方便用戶更直觀地安排不同桌面任務(wù),同時(shí)右鍵菜單也將同步這一變化,操作邏輯更加清晰。

10、“UWP設(shè)置”增加光標(biāo)速度

“控制面板”與“設(shè)置”的融合,直到今天也沒有完成。在Win10 v2004的“設(shè)置-設(shè)備-鼠標(biāo)”中,你會(huì)發(fā)現(xiàn)一項(xiàng)新增加的“光標(biāo)速度”,其實(shí)就是之前控制面板里的“指針移動(dòng)速度”

11、新版記事本

Win10 v2004采用了一套全新的記事本組件,和之前版本相比,新記事本提供了字體調(diào)節(jié)、行列位置標(biāo)識(shí)、一鍵搜索、UTF8編碼、未保存提醒(*)等功能。甚至可以讓用戶通過“設(shè)置-應(yīng)用-應(yīng)用和功能-可選功能”,自由卸載這一組件。換言之,如今的記事本已經(jīng)徹徹底底,由原來(lái)的內(nèi)置組件變成一款功能插件,隨用隨裝!

12、藍(lán)牙

Win10 v2004對(duì)原有藍(lán)牙連接界面進(jìn)行改造,新界面讓連接更加簡(jiǎn)單快捷。除了通過快捷面板連接以外,也支持從通知中心進(jìn)行連接。

13、磁盤清理

磁盤清理很長(zhǎng)時(shí)間都是“強(qiáng)迫癥”用戶的必選功能,隨著Win10“存儲(chǔ)感知”一點(diǎn)點(diǎn)完善,“磁盤清理”的點(diǎn)開率也越來(lái)越低。在此次Win10 v2004版中,微軟對(duì)其中一個(gè)關(guān)鍵問題進(jìn)行了更新——將“下載文件夾”排除出默認(rèn)清理列表,防止用戶誤刪重要文件。

14、完整版Linux子系統(tǒng)

從Win10 v2004開始,微軟開始附帶適用于Linux 2的Windows子系統(tǒng)(WSL2)。新架構(gòu)采用完整的Linux內(nèi)核,可以向開發(fā)人員提供了更快的文件系統(tǒng)性能及開發(fā)體驗(yàn)。后續(xù)微軟還會(huì)將其加入自動(dòng)更新,這樣就可以讓W(xué)indows Linux子系統(tǒng)時(shí)刻保持最新狀態(tài)。

15、游戲方面改進(jìn)

Win10 v2004也優(yōu)化了游戲方面的表現(xiàn),通過提高多顯示器刷新率,有效杜絕兩臺(tái)顯示器之間因?yàn)橐苿?dòng)窗口而導(dǎo)致的卡頓(WDDM 2.7)。同時(shí)全新的DirectX 12 Ultimate,還引入光線追蹤Raytracing 1.1支持。允許游戲引擎根據(jù)渲染需要,加載光線跟蹤著色器(非預(yù)先定義),以便更高效地利用顯卡資源,提高幀率。

16、網(wǎng)絡(luò)面板

網(wǎng)絡(luò)面板類似于之前的Windows Hello,將多個(gè)頁(yè)面整合到一起,一方面可以節(jié)省空間,另一方面整個(gè)頁(yè)面也將變得更加一目了然。

17、聽寫支持更多語(yǔ)言

“聽寫”(Win H)支持更多語(yǔ)言,除了默認(rèn)的中文和英語(yǔ)(美國(guó))之外,現(xiàn)在還支持英語(yǔ)(加拿大)、英語(yǔ)(英國(guó))、英語(yǔ)(澳大利亞)、英語(yǔ)(印度)、法語(yǔ)(法國(guó))、法語(yǔ)(加拿大)、德語(yǔ)(德國(guó))、意大利語(yǔ)(意大利)、西班牙語(yǔ)(西班牙)、西班牙語(yǔ)(墨西哥)、葡萄牙語(yǔ)(巴西)等多國(guó)語(yǔ)言。此外“語(yǔ)言”設(shè)置面板也有變化,更直觀也便于操作了。

18、未關(guān)閉UWP應(yīng)用重啟自動(dòng)啟動(dòng)

macOS有一項(xiàng)功能,可以在重啟系統(tǒng)后,自動(dòng)啟動(dòng)之前沒有關(guān)閉過的應(yīng)用,Win10 v2004加入了這項(xiàng)功能。

在“設(shè)置-賬戶-登錄選項(xiàng)”中,可以看到兩個(gè)新增加的選項(xiàng),分別對(duì)應(yīng)于“重啟UWP應(yīng)用“(注銷時(shí)自動(dòng)保存可重啟的應(yīng)用,并在登錄后重啟這些應(yīng)用)和”重啟桌面程序“(更新或重啟后,使用我的登錄信息自動(dòng)完成設(shè)備設(shè)置)。功能開啟后,Win10會(huì)在注銷、重啟Windows系統(tǒng)時(shí),自動(dòng)啟動(dòng)之前沒有關(guān)閉過的程序,以方便用戶快速接續(xù)之前的工作。

19、更新限流

Win10更新會(huì)占用大量的時(shí)間與帶寬,這對(duì)于移動(dòng)端用戶并不是什么好事。之前老版Win10為了解決這一問題,特意在“設(shè)置-傳遞優(yōu)化-高級(jí)選項(xiàng)“中加入一項(xiàng)流量上限設(shè)置,一旦流量達(dá)到上限,即會(huì)自動(dòng)暫停更新下載。

Win10 v2004在原有百分比限流基礎(chǔ)上,又增加了一個(gè)絕對(duì)值限制。用戶可以直接輸入帶寬上限(Mbps),以便適合更多的操作環(huán)境。

20、PUA保護(hù)

Win10 v2004新增一項(xiàng)安全設(shè)置——不受歡迎程序(PUA),這項(xiàng)新功能位于“安全中心-應(yīng)用和瀏覽器控制-基于聲譽(yù)的保護(hù)-阻止可能不需要的應(yīng)用”中。開啟后,Windows會(huì)自動(dòng)檢測(cè)并阻止廣告軟件、加密幣挖礦程序、捆綁垃圾程序的運(yùn)行,此外瀏覽器下載時(shí)也會(huì)掃描。

21、沙盒更新

“沙盒”(Windows Sandbox)是Win10自帶的一套簡(jiǎn)易虛擬機(jī),可以為用戶提供一個(gè)安全可靠的模擬測(cè)試環(huán)境。Win10 v2004對(duì)沙盒進(jìn)行更新,新沙盒擁有更為強(qiáng)大的兼容性能,可以直接使用宿主機(jī)音響及麥克設(shè)備。同時(shí)2004版還增加了兩套全新的快捷鍵,分別是:Ctrl Alt Pause(最大化/還原窗口)和Shift Alt Home(調(diào)出任務(wù)管理器)。

22、更多內(nèi)置組件可卸載

在Win10 v2004中,類似Windows Media Player、Microsoft畫圖、Windows傳真和掃描等一些過時(shí)模塊,已經(jīng)在“設(shè)置-應(yīng)用-應(yīng)用和功能-可選功能”中卸載。此外類似步驟記錄器、無(wú)線顯示器、WordPad、Windows Hello人臉這些日常點(diǎn)擊率不高的模塊,也能根據(jù)需要?jiǎng)h除。

23、云下載

傳統(tǒng)系統(tǒng)安裝,需要準(zhǔn)備系統(tǒng)鏡像(.iso)、啟動(dòng)U盤等設(shè)備,對(duì)于普通用戶來(lái)說(shuō)并不友好。Win10 v2004增加了一項(xiàng)云下載(云安裝)功能,可以自動(dòng)從云端下載最新的Win10安裝鏡像,以完成系統(tǒng)安裝。整個(gè)過程和之前的系統(tǒng)重置非常相似,首先點(diǎn)擊“設(shè)置-恢復(fù)-重置此電腦”,然后就可以在二級(jí)頁(yè)面看到這項(xiàng)新增加的功能了。不過由于整個(gè)過程要下載一套Win10鏡像,因此要求硬盤至少要預(yù)留4GB以上空閑空間。

24、不再提供32位系統(tǒng)支持

新版Win10在硬件兼容上與舊版差距不大,但新增加了包括Ryzen 4000(AMD)在內(nèi)的新CPU支持。不過從這個(gè)版本開始,微軟將不再向OEM廠商及開發(fā)者提供32位Win10系統(tǒng),這也就意味著,Win10從這一代開始將正式步入全64位時(shí)代。當(dāng)然出于其他方面的考慮,零售版32位還在支持之中。但最終32位CPU將不再得到廠商支持,從而退出桌面歷史平臺(tái)。

寫在最后

除了上面提到的這些改變以外,Win10 v2004 RTM也有一些值得我們關(guān)注的細(xì)節(jié)。首先Chromium版Edge并未出現(xiàn)在新版Win10中,而是需要用戶手工下載。其次內(nèi)置組件還是舊版居多,包括很多已經(jīng)使用新圖標(biāo)很久的模塊,裝好Win10 v2004后依舊需要進(jìn)入應(yīng)用商店手工更新一回。再有就是之前泄露過的新版計(jì)算器(帶有“繪圖模式”)和新版日歷,也沒有在新版中出現(xiàn)。

當(dāng)然不可否認(rèn),微軟此次推出的Win10 v2004在整體表現(xiàn)上還是不錯(cuò)的,變化多、流暢度也高。經(jīng)過這幾天的使用,也沒有發(fā)現(xiàn)什么明顯的Bug。不過考慮到著名的“Win10更新定律”,依舊不推薦主力機(jī)用戶現(xiàn)在就來(lái)更新這個(gè)版本。如果后續(xù)兩三周內(nèi)沒有爆出大的問題,大家就可以放心大膽地嘗鮮了!

BNC公鏈 | 比特幣與區(qū)塊鏈核心技術(shù)筆記上

為了更好的理解比特幣和區(qū)塊鏈技術(shù),最近整理了部分比特幣與區(qū)塊鏈核心技術(shù)筆記。

一:一些需要知道的術(shù)語(yǔ)。

    比特幣:比特幣(Bitcoin,縮寫B(tài)TC)是一種總量恒定2100萬(wàn)的數(shù)字貨幣,和互聯(lián)網(wǎng)一樣具有去中心化、全球化、匿名性等特性。向地球另一端轉(zhuǎn)賬比特幣,就像發(fā)送電子郵件一樣簡(jiǎn)單,低成本,無(wú)任何限制。比特幣因此被用于跨境貿(mào)易、支付、匯款等領(lǐng)域。

    比特幣地址:比特幣地址可以理解為你的賬戶身份id,或者可以比喻為銀行卡號(hào)(例如:12bZrnSvmEusm3KmshobPJiNcZEkJcXGNr)由一串字符和數(shù)字組成,以阿拉伯?dāng)?shù)字“1”開頭,不過這數(shù)字由密碼算法產(chǎn)生。

    區(qū)塊:一個(gè)區(qū)塊就是若干交易數(shù)據(jù)的集合,它會(huì)被標(biāo)記上時(shí)間戳和之前一個(gè)區(qū)塊的獨(dú)特標(biāo)記。區(qū)塊頭經(jīng)過哈希運(yùn)算后會(huì)生成一份工作量證明,從而驗(yàn)證區(qū)塊中的交易。有效的區(qū)塊經(jīng)過全網(wǎng)絡(luò)的共識(shí)后會(huì)被追加到主區(qū)塊鏈中。

    區(qū)塊鏈?zhǔn)且淮ㄟ^驗(yàn)證的區(qū)塊,當(dāng)中的每一個(gè)區(qū)塊都與上一個(gè)相連,一直連到創(chuàng)世區(qū)塊。

    交易確認(rèn):當(dāng)一項(xiàng)交易被區(qū)塊收錄時(shí),我們可以說(shuō)它有一次確認(rèn)。礦工們?cè)诖藚^(qū)塊之后每再產(chǎn)生一個(gè)區(qū)塊,此項(xiàng)交易的確認(rèn)數(shù)就再加一。當(dāng)確認(rèn)數(shù)達(dá)到六及以上時(shí),通常認(rèn)為這筆交易比較安全并難以逆轉(zhuǎn)。

    交易:簡(jiǎn)單地說(shuō),交易指把比特幣從一個(gè)地址轉(zhuǎn)到另一個(gè)地址。更準(zhǔn)確地說(shuō),一筆“交易”指一個(gè)經(jīng)過簽名運(yùn)算的,表達(dá)價(jià)值轉(zhuǎn)移的數(shù)據(jù)結(jié)構(gòu)。每一筆“交易”都經(jīng)過比特幣網(wǎng)絡(luò)傳輸,由礦工節(jié)點(diǎn)收集并封包至區(qū)塊中,永久保存在區(qū)塊鏈某處。

    難度:整個(gè)網(wǎng)絡(luò)會(huì)通過調(diào)整“難度”這個(gè)變量來(lái)控制生成工作量證明所需要的計(jì)算力。

    難度目標(biāo):使整個(gè)網(wǎng)絡(luò)的計(jì)算力大致每10分鐘產(chǎn)生一個(gè)區(qū)塊所需要的難度數(shù)值即為難度目標(biāo)。

    難度調(diào)整:整個(gè)網(wǎng)絡(luò)每產(chǎn)生2,106個(gè)區(qū)塊后會(huì)根據(jù)之前2,106個(gè)區(qū)塊的算力進(jìn)行難度調(diào)整。

    礦工費(fèi):交易的發(fā)起者通常會(huì)向網(wǎng)絡(luò)繳納一筆礦工費(fèi),用以處理這筆交易。大多數(shù)的交易需要0.5毫比特幣的礦工費(fèi)。

    礦工:指通過不斷重復(fù)哈希運(yùn)算來(lái)產(chǎn)生工作量證明的各網(wǎng)絡(luò)節(jié)點(diǎn)。

    錢包:指保存比特幣地址和私鑰的軟件,可以用它來(lái)接受、發(fā)送、儲(chǔ)存你的比特幣。、

    比特幣網(wǎng)絡(luò):是一個(gè)由若干節(jié)點(diǎn)組成的用以廣播交易信息和數(shù)據(jù)區(qū)塊的P2P網(wǎng)絡(luò)。

二、基本的介紹

什么是比特幣

    不同于傳統(tǒng)貨幣,比特幣是完全虛擬的。它不但沒有實(shí)體,本質(zhì)上也沒有一種虛擬物品代表比特幣。

    比特幣隱含在收發(fā)幣的轉(zhuǎn)賬記錄中。用戶只要有證明其控制權(quán)的密鑰,用密鑰解鎖,就可以發(fā)送比特幣。

    這些密鑰通常存儲(chǔ)在計(jì)算機(jī)的數(shù)字錢包里。擁有密鑰是使用比特幣的唯一條件,這讓控制權(quán)完全掌握在每個(gè)人手中。

    本質(zhì)上,挖礦把央行的貨幣發(fā)行和結(jié)算功能進(jìn)行分布式,用全球化的算力競(jìng)爭(zhēng)來(lái)取代對(duì)中央發(fā)行機(jī)構(gòu)的需求。

    比特幣系統(tǒng)包含調(diào)節(jié)挖礦難度的協(xié)議。挖礦——在比特幣網(wǎng)絡(luò)中成功寫入一個(gè)區(qū)塊交易——的難度是動(dòng)態(tài)調(diào)整的,保證不管有多少礦工(多少CPU)挖礦,平均每10分鐘只有一個(gè)礦工成功。

    比特幣協(xié)議還規(guī)定,每四年新幣的開采量減半,同時(shí)限制比特幣的最終開采總量為2,100萬(wàn)枚。這樣,流通中的比特幣數(shù)量非常接近一條曲線,并將在2140年比特幣將達(dá)到2,100萬(wàn)枚。由于比特幣的開采速度隨時(shí)間遞減,從長(zhǎng)期來(lái)看,比特幣是一種通貨緊縮貨幣。此外,不能通過“印刷”新比特幣來(lái)實(shí)現(xiàn)“通貨膨脹”。

    比特幣由這些構(gòu)成:

一個(gè)去中心化的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)(比特幣協(xié)議)

一個(gè)公共的交易賬簿(區(qū)塊鏈)

一個(gè)去中心化的數(shù)學(xué)的和確定性的貨幣發(fā)行(分布式挖礦)

一個(gè)去中心化的交易驗(yàn)證系統(tǒng)(交易腳本)

比特幣網(wǎng)絡(luò)

比特幣錢包-客戶端

完整客戶端:

一個(gè)完整客戶端,或稱“全節(jié)點(diǎn)”,是存儲(chǔ)所有比特幣交易的整個(gè)交易歷史(由每一個(gè)用戶完成的每一筆交易,曾經(jīng)所有的每一筆)的客戶端,管理用戶的錢包,并可以在比特幣網(wǎng)絡(luò)上直接開始交易。

類似于一個(gè)獨(dú)立的電子郵件服務(wù)器,因?yàn)樗幚碇鴧f(xié)議的各個(gè)方面,而不依賴于任何其它的服務(wù)器或第三方服務(wù)。

完整客戶端目前需要大概145g端空間來(lái)存儲(chǔ)全部區(qū)塊數(shù)據(jù)。

來(lái)源:https://bitcoin.org/en/download

輕量級(jí)客戶端

一個(gè)輕量級(jí)客戶端存儲(chǔ)用戶的錢包,但需要依賴第三方服務(wù)器才能進(jìn)行比特幣交易,才能接入比特幣網(wǎng)絡(luò)。

輕量級(jí)客戶端不保存所有交易的完整副本,因此必須信賴第三方的服務(wù)器來(lái)獲取交易確認(rèn)。

這就類似于一個(gè)獨(dú)立的電子郵件客戶端,能夠通過郵箱服務(wù)器來(lái)訪問一個(gè)郵箱,因?yàn)樗诰W(wǎng)絡(luò)交流中依賴于一個(gè)第三方服務(wù)器。

在線客戶端

在線客戶端通過網(wǎng)頁(yè)瀏覽器在第三方服務(wù)器上訪問和儲(chǔ)存該用戶的錢包。

這類似于在線郵件,因?yàn)樗耆蕾囉诘谌椒?wù)器。

移動(dòng)客戶端

智能手機(jī)的移動(dòng)客戶端,例如基于Android系統(tǒng),既可以作完整客戶端運(yùn)行,也可作為輕量級(jí)客戶端或在線客戶端。

一些移動(dòng)客戶端是與在線客戶端或桌面客戶端同步的,提供跨多個(gè)設(shè)備但有一個(gè)共同的資金源的多平臺(tái)錢包。

    比特幣客戶端的選擇,取決于用戶想要管理資金的數(shù)目。一個(gè)完整的客戶端將為用戶提供最高級(jí)的管理和獨(dú)立性。這樣錢包的備份和安全責(zé)任就轉(zhuǎn)移到了用戶身上。另一種選擇是在線客戶端,其設(shè)置和使用是最簡(jiǎn)單的,但在線客戶端的取舍還在于需衡量第三方介入的風(fēng)險(xiǎn),因?yàn)榘踩院涂刂茩?quán)是由用戶和網(wǎng)頁(yè)服務(wù)商所共同承擔(dān)的。如果一個(gè)在線錢包服務(wù)遭受了損失,就像已發(fā)生過的那樣,用戶們可能會(huì)失去所有的資金。反過來(lái)看,如果用戶的一個(gè)完整客戶端沒有進(jìn)行適當(dāng)?shù)膫浞?,他們可能?huì)因?yàn)殡娔X的操作失誤而丟失他們的資金。

三、比特幣基本原理

概述

    從千分之一比特幣(1毫比特幣)到一億分之一比特幣(1聰比特幣),比特幣網(wǎng)絡(luò)可以處理任意小額交易。在本書中,我們將用“比特幣”這個(gè)術(shù)語(yǔ)來(lái)表示任意數(shù)量的比特幣貨幣,從最小單元(1聰)到可被挖出的所有比特幣總數(shù)(21,000,000)。

    交易包含了每一筆被轉(zhuǎn)移的比特幣(輸入)的所有權(quán)證明,它以所有者的數(shù)字簽名形式存在,并可以被任何人獨(dú)立驗(yàn)證。

    在比特幣術(shù)語(yǔ)中,“消費(fèi)”指的是簽署一筆交易:轉(zhuǎn)移一筆以前交易的比特幣給以比特幣地址所標(biāo)識(shí)的新所有者。

比特幣交易

    交易告知全網(wǎng):比特幣的持有者已授權(quán)把比特幣轉(zhuǎn)帳給其他人。而新持有者能夠再次授權(quán),轉(zhuǎn)移給該比特幣所有權(quán)鏈中的其他人,產(chǎn)生另一筆交易來(lái)花掉這些比特幣,后面的持有者在花費(fèi)比特幣也是用類似的方式。

    交易形式

最常見的交易形式是從一個(gè)地址到另一個(gè)地址的簡(jiǎn)單支付,這種交易也常常包含給支付者的“找零”

另一種常見的交易形式是集合多個(gè)輸入到一個(gè)輸出的模式。這相當(dāng)于現(xiàn)實(shí)生活中將很多硬幣和紙幣零錢兌換為一個(gè)大額面鈔。像這樣的交易有時(shí)由錢包應(yīng)用產(chǎn)生來(lái)清理許多在支付過程收到的小數(shù)額的找零。

最后一種在比特幣賬簿中常見的交易形式是將一個(gè)輸入分配給多個(gè)輸出,即多個(gè)接收者(如圖2-7)的交易。這類交易有時(shí)被商業(yè)實(shí)體用作分配資金,例如給多個(gè)雇員發(fā)工資的情形。

    交易的構(gòu)建。比特幣交易建立和簽名時(shí)不用連接比特幣網(wǎng)絡(luò)。只有在執(zhí)行交易時(shí)才需要將交易發(fā)送到網(wǎng)絡(luò)。

    完整客戶端占太大的硬盤空間,所以大多數(shù)錢包使用輕量級(jí)的客戶端,只保存用戶自己的未消費(fèi)輸出。如果錢包客戶端沒有某一未消費(fèi)交易輸出,它可以通過不同的服務(wù)者提供的各種API或完整索引節(jié)點(diǎn)的JSON PRC API從比特幣網(wǎng)絡(luò)中拿到這一交易信息。

curl 'https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK'

返回: { "unspent_outputs":[

{ "tx_hash":"f2c245c38672a5d8fba5a5caa44dcef277a52e916a0603272f91286f2b052706", "tx_hash_big_endian":"0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2", "tx_index":47854970, "tx_output_n": 1, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 8450000, "value_hex": "0080efd0", "confirmations":217419 },

{ "tx_hash":"0365fdc169b964ea5ad3219e12747e9478418fdc8abed2f5fe6d0205c96def29", "tx_hash_big_endian":"29ef6dc905026dfef5d2be8adc8f4178947e74129e21d35aea64b969c1fd6503", "tx_index":71083209, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 100000, "value_hex": "0186a0", "confirmations":161802 },

{ "tx_hash":"d9717f774daab8d3dd470853204394c82e3c01097479575d6d2ee97d7b3bdfa1", "tx_hash_big_endian":"a1df3b7b7de92e6d5d57797409013c2ec8944320530847ddd3b8aa4d777f71d9", "tx_index":75974855, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 1000000, "value_hex": "0f4240", "confirmations":153961 },

{ "tx_hash":"3f1df69df90d097981ca9c97ad8b6a32daed345565a433f8c8e472b2dab2ac79", "tx_hash_big_endian":"79acb2dab272e4c8f833a4655534edda326a8bad979cca8179090df99df61d3f", "tx_index":79887883, "tx_output_n": 1, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 719787, "value_hex": "0afbab", "confirmations":148074 },

{ "tx_hash":"417bdb6f5db3e830407f94d1a82d1667e738b19da3679b7263ebfb913394efdd", "tx_hash_big_endian":"ddef943391fbeb63729b67a39db138e767162da8d1947f4030e8b35d6fdb7b41", "tx_index":170905487, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":67883 },

{ "tx_hash":"d049d6039f9d1cb2625bac294d7465b4b1077bd5bc0e30e01e02b184db524c1f", "tx_hash_big_endian":"1f4c52db84b1021ee0300ebcd57b07b1b465744d29ac5b62b21c9d9f03d649d0", "tx_index":174630347, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 11100, "value_hex": "2b5c", "confirmations":65345 },

{ "tx_hash":"b8a6470c7a38d0983effed00a3f75c74ba371da1387352f35d1df155851ea8d1", "tx_hash_big_endian":"d1a81e8555f11d5df3527338a11d37ba745cf7a300edff3e98d0387a0c47a6b8", "tx_index":175949432, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64439 },

{ "tx_hash":"a2b9570e26e3991fc999c42dc8c6eea7b06514b61814da1a71b56c6ba2ae651c", "tx_hash_big_endian":"1c65aea26b6cb5711ada1418b61465b0a7eec6c82dc499c91f99e3260e57b9a2", "tx_index":175955161, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64430 },

{ "tx_hash":"05230cb8cd8c6a3788ed41433dfdd68a1a608cc8feb3bc1c29d97ce84bec070e", "tx_hash_big_endian":"0e07ec4be87cd9291cbcb3fec88c601a8ad6fd3d4341ed88376a8ccdb80c2305", "tx_index":175955664, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64430 }

] }curl 'https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK'

返回: { "unspent_outputscurl 'https://blockchain.info/unspent?active=1Cdid9KFAaatwczBwBttQcwXYCpvK8h7FK'

返回: { "unspent_outputs":[

{ "tx_hash":"f2c245c38672a5d8fba5a5caa44dcef277a52e916a0603272f91286f2b052706", "tx_hash_big_endian":"0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2", "tx_index":47854970, "tx_output_n": 1, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 8450000, "value_hex": "0080efd0", "confirmations":217419 },

{ "tx_hash":"0365fdc169b964ea5ad3219e12747e9478418fdc8abed2f5fe6d0205c96def29", "tx_hash_big_endian":"29ef6dc905026dfef5d2be8adc8f4178947e74129e21d35aea64b969c1fd6503", "tx_index":71083209, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 100000, "value_hex": "0186a0", "confirmations":161802 },

{ "tx_hash":"d9717f774daab8d3dd470853204394c82e3c01097479575d6d2ee97d7b3bdfa1", "tx_hash_big_endian":"a1df3b7b7de92e6d5d57797409013c2ec8944320530847ddd3b8aa4d777f71d9", "tx_index":75974855, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 1000000, "value_hex": "0f4240", "confirmations":153961 },

{ "tx_hash":"3f1df69df90d097981ca9c97ad8b6a32daed345565a433f8c8e472b2dab2ac79", "tx_hash_big_endian":"79acb2dab272e4c8f833a4655534edda326a8bad979cca8179090df99df61d3f", "tx_index":79887883, "tx_output_n": 1, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 719787, "value_hex": "0afbab", "confirmations":148074 },

{ "tx_hash":"417bdb6f5db3e830407f94d1a82d1667e738b19da3679b7263ebfb913394efdd", "tx_hash_big_endian":"ddef943391fbeb63729b67a39db138e767162da8d1947f4030e8b35d6fdb7b41", "tx_index":170905487, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":67883 },

{ "tx_hash":"d049d6039f9d1cb2625bac294d7465b4b1077bd5bc0e30e01e02b184db524c1f", "tx_hash_big_endian":"1f4c52db84b1021ee0300ebcd57b07b1b465744d29ac5b62b21c9d9f03d649d0", "tx_index":174630347, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 11100, "value_hex": "2b5c", "confirmations":65345 },

{ "tx_hash":"b8a6470c7a38d0983effed00a3f75c74ba371da1387352f35d1df155851ea8d1", "tx_hash_big_endian":"d1a81e8555f11d5df3527338a11d37ba745cf7a300edff3e98d0387a0c47a6b8", "tx_index":175949432, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64439 },

{ "tx_hash":"a2b9570e26e3991fc999c42dc8c6eea7b06514b61814da1a71b56c6ba2ae651c", "tx_hash_big_endian":"1c65aea26b6cb5711ada1418b61465b0a7eec6c82dc499c91f99e3260e57b9a2", "tx_index":175955161, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64430 },

{ "tx_hash":"05230cb8cd8c6a3788ed41433dfdd68a1a608cc8feb3bc1c29d97ce84bec070e", "tx_hash_big_endian":"0e07ec4be87cd9291cbcb3fec88c601a8ad6fd3d4341ed88376a8ccdb80c2305", "tx_index":175955664, "tx_output_n": 0, "script":"76a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac", "value": 10000, "value_hex": "2710", "confirmations":64430 }

] }

創(chuàng)建交易輸出

    交易的輸出會(huì)被創(chuàng)建成為一個(gè)包含這筆數(shù)額的腳本的形式,只能被引入這個(gè)腳本的一個(gè)解答后才能兌換。

    簡(jiǎn)單點(diǎn)說(shuō)就是,支付方的交易輸出會(huì)包含一個(gè)腳本,這個(gè)腳本說(shuō) “這個(gè)輸出誰(shuí)能拿出一個(gè)簽名和接收方的公開地址匹配上,就支付給誰(shuí)”。因?yàn)橹挥薪邮辗藉X包的私鑰可以匹配這個(gè)地址,所以只有接收方的錢包可以提供這個(gè)簽名以兌換這筆輸出。因此支付方式會(huì)用需要接收方的簽名來(lái)包裝一個(gè)輸出。

    假如支付方的地址上,金額是0.10比特幣的輸出形式,而此次交易只需要支付0.015比特幣,就需要找0.085比特幣的零錢。支付方的錢包將自己的金額分成了兩個(gè)支付:一個(gè)給接收方,一個(gè)給自己。她可以在以后的交易里消費(fèi)這筆零錢輸出。

    最后,為了讓這筆交易盡快地被網(wǎng)絡(luò)處理,支付方的錢包會(huì)多付一小筆費(fèi)用。這個(gè)不是明顯地包含在交易中的,而是通過輸入和輸出的差值所隱含的。這個(gè)差值會(huì)就被礦工當(dāng)作交易費(fèi)放到區(qū)塊的交易里,最終放進(jìn)區(qū)塊鏈帳薄中。

    支付方的錢包應(yīng)用創(chuàng)建的交易大小為258字節(jié),包含了金額未來(lái)所屬需要的全部信息。最后的最后,這個(gè)交易必須要被傳送到比特幣網(wǎng)絡(luò)中以成為分布式賬簿(區(qū)塊鏈)的一部分。

交易的傳送

    比特幣網(wǎng)絡(luò)是由參與的比特幣客戶端聯(lián)接幾個(gè)其他比特幣客戶端組成的P2P網(wǎng)絡(luò)。比特幣網(wǎng)絡(luò)的目的是將交易和區(qū)塊傳播給所有參與者。

    錢包應(yīng)用可以發(fā)送新的交易給其它任意一個(gè)已聯(lián)接到互聯(lián)網(wǎng)的比特幣客戶端。支付方的錢包不必直接連著接收方的比特幣錢包。任何比特幣網(wǎng)絡(luò)節(jié)點(diǎn)(其它客戶端)收到一個(gè)之前沒見過的有效交易時(shí)會(huì)立刻將它轉(zhuǎn)發(fā)給聯(lián)接到自身的其它節(jié)點(diǎn)。因此,這個(gè)交易迅速地從P2P網(wǎng)絡(luò)中傳播開來(lái),幾秒內(nèi)就能到達(dá)大多數(shù)節(jié)點(diǎn)。

    接受者的錢包接收到支付方發(fā)過來(lái)的交易節(jié)點(diǎn)時(shí),會(huì)立即確認(rèn)交易是一個(gè)收入支付,因?yàn)樗苡米约核借€兌換的輸出。接收方的錢包應(yīng)用也能夠獨(dú)立地用之前未消費(fèi)輸入來(lái)確認(rèn)這個(gè)交易是正確構(gòu)建的,并且由于包含足夠交易費(fèi)會(huì)被下一個(gè)區(qū)塊包含進(jìn)去。這時(shí)接收方就可以以一個(gè)很小的風(fēng)險(xiǎn)假定這個(gè)交易會(huì)很快被加到區(qū)塊且被確認(rèn)。

    一個(gè)對(duì)比特幣交易的常見誤解是它們必須要等10分鐘后被確認(rèn)加進(jìn)一個(gè)新區(qū)塊,或等60分鐘以得到六次確認(rèn)后才是有效的。雖然這些確認(rèn)可以確保交易已被整個(gè)網(wǎng)絡(luò)接受,但對(duì)于像一杯咖啡這樣的小額商品來(lái)說(shuō)就沒有必要等待那么長(zhǎng)時(shí)間了。一個(gè)商家可以免確認(rèn)來(lái)接受比特幣小額支付。這樣做的風(fēng)險(xiǎn)不比接受一個(gè)不是用有效身份證領(lǐng)取或沒有簽名的信用卡的風(fēng)險(xiǎn)更大,而后者是現(xiàn)在商家常做的事情。

交易確認(rèn)--挖礦

    挖礦在比特幣系統(tǒng)中起著兩個(gè)作用:

挖礦在構(gòu)建區(qū)塊時(shí)會(huì)創(chuàng)造新的比特幣,和一個(gè)中央銀行印發(fā)新的紙幣很類似。每個(gè)區(qū)塊創(chuàng)造的比特幣數(shù)量是固定的,隨時(shí)間會(huì)漸漸減少

挖礦創(chuàng)建信任。挖礦確保只有在包含交易的區(qū)塊上貢獻(xiàn)了足夠的計(jì)算量后,這些交易才被確認(rèn)。區(qū)塊越多,花費(fèi)的計(jì)算量越大,意味著更多的信任

工作量證明算法指的用SHA256加密算法不斷地對(duì)區(qū)塊頭和一個(gè)隨機(jī)數(shù)字進(jìn)行哈希計(jì)算,直到出現(xiàn)一個(gè)和預(yù)設(shè)值相匹配的解

    網(wǎng)絡(luò)中產(chǎn)生的一筆交易直到成為整個(gè)比特幣大賬簿——區(qū)塊鏈的一部分時(shí)才會(huì)被確認(rèn)有效。

    平均每10分鐘,礦工會(huì)將自上一個(gè)區(qū)塊以來(lái)發(fā)生的所有交易生成一個(gè)新的區(qū)塊。

    新交易不斷地從用戶錢包和應(yīng)用流入比特幣網(wǎng)絡(luò)。當(dāng)比特幣網(wǎng)絡(luò)上的節(jié)點(diǎn)看到這些交易時(shí),會(huì)先將它們放到各自節(jié)點(diǎn)維護(hù)的一個(gè)臨時(shí)的未經(jīng)驗(yàn)證的交易池中。當(dāng)?shù)V工構(gòu)建一個(gè)新區(qū)塊時(shí),會(huì)將這些交易從這個(gè)交易池中拿出來(lái)放到這個(gè)新區(qū)塊中,然后通過嘗試解決一個(gè)非常困難的問題(也叫工作量證明)以證明這個(gè)新區(qū)塊的合法性。

    交易被加進(jìn)新區(qū)塊時(shí),以交易費(fèi)用高的優(yōu)先以及其它的一些規(guī)則進(jìn)行排序。

    礦工一旦從網(wǎng)絡(luò)上收到一個(gè)新區(qū)塊時(shí),會(huì)意識(shí)到在這個(gè)區(qū)塊上的解題競(jìng)賽已經(jīng)輸?shù)袅?,?huì)馬上開始下一個(gè)新區(qū)塊的挖掘工作。它會(huì)立刻將一些交易和這個(gè)新區(qū)塊的數(shù)字指紋放在一起開始構(gòu)建下一個(gè)新區(qū)塊,并開始給它計(jì)算工作量證明。

    每個(gè)礦工會(huì)在他的區(qū)塊中包含一個(gè)特殊的交易,將新生成的比特幣(當(dāng)前每區(qū)塊為25比特幣)作為報(bào)酬支付到他自己的比特幣地址。如果他找到了使得新區(qū)塊有效的解法,他就會(huì)得到這筆報(bào)酬,因?yàn)檫@個(gè)新區(qū)塊被加入到了總區(qū)塊鏈中,他添加的這筆報(bào)酬交易也會(huì)變成可消費(fèi)的。

    按慣例來(lái)說(shuō),一個(gè)區(qū)塊獲得六次以上“證明”時(shí)就被認(rèn)為是不可撤銷的了,因?yàn)橐蜂N和重建六個(gè)區(qū)塊需要巨量的計(jì)算。

四、比特幣客戶端

    BitCoin,比特幣核心擁有交易賬簿(區(qū)塊鏈)的一份完整拷貝,里面記錄了自2009年比特幣網(wǎng)絡(luò)被發(fā)明以來(lái)發(fā)生在比特幣網(wǎng)絡(luò)上的每一筆交易。

    bitcoin源碼地址:https://github.com/bitcoin/bitcoin

    帶有rc后綴的是預(yù)發(fā)行版本,可以用來(lái)測(cè)試。沒有后綴的穩(wěn)定版本可以直接在產(chǎn)品環(huán)境上運(yùn)行。

其他客戶端

    pycoin 是一款基于Python庫(kù),并可以支持比特幣密鑰的操作和交易的客戶端,甚至可以支持編譯語(yǔ)言從而處理非標(biāo)準(zhǔn)交易。

    btcd是一款基于Go語(yǔ)言的全節(jié)點(diǎn)比特幣工具。目前,它通過使用精準(zhǔn)的規(guī)則(包括bugs),下載、驗(yàn)證和服務(wù)區(qū)塊鏈。它同時(shí)依靠新發(fā)掘出來(lái)的區(qū)塊來(lái)維持交易池,同時(shí)依賴沒有形成區(qū)塊的單獨(dú)交易。在縝密的規(guī)則以及檢查下,確保了每筆獨(dú)立交易的安全,并且可以過濾基于礦工需求的交易。btcd與bitcoind的一個(gè)主要區(qū)別是btcd不包含比特幣錢包的功能,其實(shí)這是一個(gè)精心的設(shè)計(jì)。這意味著你不能直接通過btcd進(jìn)行比特幣交易。然而這項(xiàng)功能可以由正在研發(fā)的btcwallet與btcgui兩個(gè)項(xiàng)目提供。另一個(gè)顯著的區(qū)別是btcd同時(shí)支持HTTP POST(比如bitcoind)與推薦使用的Websockets兩種通信協(xié)議的請(qǐng)求。并且btcd的RPC連接默認(rèn)設(shè)置為TLS-開啟。

    bitcoinj 一款全節(jié)點(diǎn)java客戶端和程序庫(kù)。

五、算法與秘鑰、地址、錢包

在比特幣交易的支付環(huán)節(jié),收件人的公鑰是通過其數(shù)字指紋表示的,稱為比特幣地址,就像支票上的支付對(duì)象的名字(即“收款方”)。一般情況下,比特幣地址由一個(gè)公鑰生成并對(duì)應(yīng)于這個(gè)公鑰。然而,并非所有比特幣地址都是公鑰;他們也可以代表其他支付對(duì)象,譬如腳本。這樣一來(lái),比特幣地址把收款方抽象起來(lái)了。

橢圓曲線算法:私鑰和公鑰

比特幣或者大部分區(qū)塊鏈的核心系統(tǒng)是基于橢圓曲線算法(Elliptic-curve cryptography

)建立起來(lái)的,ECC 是一種公開密鑰密碼學(xué),又稱為非對(duì)稱密碼學(xué)。在這種密碼學(xué)中,需要產(chǎn)生一對(duì)密鑰。其中一個(gè)密鑰稱為私鑰,需要保密;另一個(gè)密鑰稱為公鑰,是可以公開讓別人知道的。私鑰和公鑰在數(shù)學(xué)上的關(guān)系是不可逆的,也就是通過某個(gè)數(shù)學(xué)函數(shù),我們可以從私鑰計(jì)算出公鑰,但是不能從公鑰反向推導(dǎo)出私鑰(或者說(shuō)從計(jì)算上是不可行的)。有關(guān)此算法的相關(guān)可以參考:http://diamond.boisestate.edu/~liljanab/MATH308/GuideToECC.pdf,簡(jiǎn)單來(lái)說(shuō)就是

    一個(gè)比特幣錢包中包含一系列的密鑰對(duì),每個(gè)密鑰對(duì)包括一個(gè)私鑰和一個(gè)公鑰。私鑰(k)是一個(gè)數(shù)字,通常是隨機(jī)選出的。有了私鑰,我們就可以使用<font color="red">橢圓曲線乘法</font>這個(gè)單向加密函數(shù)產(chǎn)生一個(gè)公鑰(K)。

    有了公鑰(K),我們就可以使用一個(gè)單向加密哈希函數(shù)生成比特幣地址(A)

    在比特幣交易中,私鑰用于生成支付比特幣所必需的簽名以證明資金的所有權(quán)。

    私鑰必須始終保持機(jī)密,因?yàn)橐坏┍恍孤督o第三方,相當(dāng)于該私鑰保護(hù)之下的比特幣也拱手相讓了。

    私鑰還必須進(jìn)行備份,以防意外丟失,因?yàn)樗借€一旦丟失就難以復(fù)原,其所保護(hù)的比特幣也將永遠(yuǎn)丟失。

    私鑰一般是256 bit

    比特幣軟件使用操作系統(tǒng)底層的隨機(jī)數(shù)生成器來(lái)產(chǎn)生256位的熵(隨機(jī)性)。通常情況下,操作系統(tǒng)隨機(jī)數(shù)生成器由人工的隨機(jī)源進(jìn)行初始化,也可能需要通過幾秒鐘內(nèi)不?;蝿?dòng)鼠標(biāo)等方式進(jìn)行初始化。

    私鑰可以是1和n-1之間的任何數(shù)字,其中n是一個(gè)常數(shù)(n=1.158 * 1077,略小于2256),并由比特幣所使用的橢圓曲線的階所定義(見4.1.5 橢圓曲線密碼學(xué)解釋)。要生成這樣的一個(gè)私鑰,我們隨機(jī)選擇一個(gè)256位的數(shù)字,并檢查它是否小于n-1。從編程的角度來(lái)看,一般是通過在一個(gè)密碼學(xué)安全的隨機(jī)源中取出一長(zhǎng)串隨機(jī)字節(jié),對(duì)其使用SHA256哈希算法進(jìn)行運(yùn)算,這樣就可以方便地產(chǎn)生一個(gè)256位的數(shù)字。如果運(yùn)算結(jié)果小于n-1,我們就有了一個(gè)合適的私鑰。否則,我們就用另一個(gè)隨機(jī)數(shù)再重復(fù)一次。

    一定不要使用自己寫的代碼或使用編程語(yǔ)言內(nèi)建的簡(jiǎn)易隨機(jī)數(shù)生成器來(lái)獲得一個(gè)隨機(jī)數(shù)。我們建議讀者使用密碼學(xué)安全的偽隨機(jī)數(shù)生成器(CSPRNG),并且需要有一個(gè)來(lái)自具有足夠熵值的源的種子。使用隨機(jī)數(shù)發(fā)生器的程序庫(kù)時(shí),需仔細(xì)研讀其文檔,以確保它是加密安全的。對(duì)CSPRNG的正確實(shí)現(xiàn)是密鑰安全性的關(guān)鍵所在。

    dumpprivkey命令會(huì)把私鑰以Base58校驗(yàn)和編碼格式顯示,這種私鑰格式被稱為錢包導(dǎo)入格式(WIF,Wallet Import Format)

    sx newkey -> 生成并顯示私鑰

    比特幣地址A = RIPEMD160(SHA256( public key ))

    通常用戶見到的比特幣地址是經(jīng)過“Base58Check”編碼的,這種編碼使用了58個(gè)字符(一種Base58數(shù)字系統(tǒng))和校驗(yàn)碼,提高了可讀性、避免歧義并有效防止了在地址轉(zhuǎn)錄和輸入中產(chǎn)生的錯(cuò)誤。Base58Check編碼也被用于比特幣的其它地方,例如比特幣地址、私鑰、加密的密鑰和腳本哈希中,用來(lái)提高可讀性和錄入的正確性。

    最全面的比特幣Python庫(kù)是 Vitalik Buterin寫的pybitcointools

比特幣錢包

    錢包是私鑰的容器,通常通過有序文件或者簡(jiǎn)單的數(shù)據(jù)庫(kù)實(shí)現(xiàn)。另外一種制作私鑰的途徑是 確定性密鑰生成。在這里你可以用原先的私鑰,通過單向哈希函數(shù)來(lái)生成每一個(gè)新的私鑰,并將新生成的密鑰按順序連接。只要你可以重新創(chuàng)建這個(gè)序列,你只需要第一個(gè)私鑰(稱作種子、主私鑰)來(lái)生成它們。

非確定性(隨機(jī))錢包

    在最早的一批比特幣客戶端中,錢包只是隨機(jī)生成的私鑰集合。這種類型的錢包被稱作零型非確定錢包。

    舉個(gè)例子,比特幣核心客戶端預(yù)先生成100個(gè)隨機(jī)私鑰,從最開始就生成足夠多的私鑰并且每把鑰匙只使用一次。這種類型的錢包有一個(gè)昵稱“Just a Bunch Of Keys(一堆私鑰)”簡(jiǎn)稱JBOK。

    這種錢包現(xiàn)在正在被確定性錢包替換,因?yàn)樗鼈冸y以管理、備份以及導(dǎo)入。

    隨機(jī)鑰匙的缺點(diǎn)就是如果你生成很多,你必須保存它們所有的副本。這就意味著這個(gè)錢包必須被經(jīng)常性地備份。每一把鑰匙都必須備份,否則一旦錢包不可訪問時(shí),錢包所控制的資金就付之東流。

    這種情況直接與避免地址重復(fù)使用的原則相沖突——每個(gè)比特幣地址只能用一次交易。地址通過關(guān)聯(lián)多重交易和對(duì)方的地址重復(fù)使用會(huì)減少隱私。

確定性(種子)錢包

    確定性,或者“種子”錢包包含通過使用單項(xiàng)離散方程而可從公共的種子生成的私鑰。

    種子是隨機(jī)生成的數(shù)字。這個(gè)數(shù)字也含有比如索引號(hào)碼或者可生成私鑰的“鏈碼”

    在確定性錢包中,種子足夠收回所有的已經(jīng)產(chǎn)生的私鑰,所以只用在初始創(chuàng)建時(shí)的一個(gè)簡(jiǎn)單備份就足以搞定。

    種子也足夠讓錢包輸入或者輸出。這就很容易允許使用者的私鑰在錢包之間輕松轉(zhuǎn)移輸入。

助記碼詞匯

    助記碼詞匯是英文單詞序列代表(編碼)用作種子對(duì)應(yīng)所確定性錢包的隨機(jī)數(shù)。單詞的序列足以重新創(chuàng)建種子,并且從種子那里重新創(chuàng)造錢包以及所有私鑰。

    助記碼代碼可以讓使用者復(fù)制錢包更容易一些,因?yàn)樗鼈兿啾容^隨機(jī)數(shù)字順序來(lái)說(shuō),可以很容易地被讀出來(lái)并且正確抄寫

    BIP0039定義助記碼和種子的創(chuàng)建過程如下:

1.創(chuàng)造一個(gè)128到256位的隨機(jī)順序(熵)

2.提出SHA256哈希前幾位,就可以創(chuàng)造一個(gè)隨機(jī)序列的校驗(yàn)和

3.把校驗(yàn)和加在隨機(jī)順序的后面

4.把順序分解成11位的不同集合,并用這些集合去和一個(gè)預(yù)先已經(jīng)定義的2048個(gè)單詞字典做對(duì)應(yīng)

5.生成一個(gè)12至24個(gè)詞的助記碼

分層確定性錢包

    分層確定性錢包包含從數(shù)結(jié)構(gòu)所生成的鑰匙。這種母鑰匙可以生成子鑰匙的序列。這些子鑰匙又可以衍生出孫鑰匙,以此無(wú)窮類推。

高級(jí)密鑰和地址

加密私鑰(BIP0038)

    私鑰必須保密

    BIP0038提出了一個(gè)通用標(biāo)準(zhǔn),使用一個(gè)口令加密私鑰并使用Base58Check對(duì)加密的私鑰進(jìn)行編碼,這樣加密的私鑰就可以安全地保存在備份介質(zhì)里,安全地在錢包間傳輸,保持密鑰在任何可能被暴露情況下的安全性。

    BIP0038加密方案是:

輸入一個(gè)比特幣私鑰,通常使用WIF編碼過,base58chek字符串的前綴“5”

輸入一個(gè)長(zhǎng)密碼作為口令,通常由多個(gè)單詞或一段復(fù)雜的數(shù)字字母字符串組成

BIP0038加密方案的輸出一個(gè)由base58check編碼過的加密私鑰,前綴為6P

    如果你看到一個(gè)6P開頭的的密鑰,這就意味著該密鑰是被加密過,并需要一個(gè)口令來(lái)轉(zhuǎn)換(解碼)該密鑰回到可被用在任何錢包WIF格式的私鑰(前綴為5)。

    許多錢包APP現(xiàn)在能夠識(shí)別BIP0038加密過的私鑰,會(huì)要求用戶提供口令解碼并導(dǎo)入密鑰。

P2SH (Pay-to-Script Hash)和多重簽名地址

    傳統(tǒng)的比特幣地址從數(shù)字1開頭,來(lái)源于公鑰,而公鑰來(lái)源于私鑰。雖然任何人都可以將比特幣發(fā)送到一個(gè)1開頭的地址,但比特幣只能在通過相應(yīng)的私鑰簽名和公鑰哈希值后才能消費(fèi)。

    以數(shù)字3開頭的比特幣地址是P2SH地址,有時(shí)被錯(cuò)誤的稱謂多重簽名或多重簽名地址。他們指定比特幣交易中受益人作為哈希的腳本,而不是公鑰的所有者。

    不同于P2PKH交易發(fā)送資金到傳統(tǒng)1開頭的比特幣地址,資金被發(fā)送到3開頭的地址時(shí),需要的不僅僅是一個(gè)公鑰的哈希值,同時(shí)也需要一個(gè)私鑰簽名作為所有者證明。在創(chuàng)建地址的時(shí)候,這些要求會(huì)被定義在腳本中,所有對(duì)地址的輸入都會(huì)被這些要求阻隔。

    script hash = RIPEMD160(SHA256(script)) 腳本哈希的結(jié)果是由Base58Check編碼前綴為5的版本、編碼后得到開頭為3的編碼地址。

    P2SH函數(shù)最常見的實(shí)現(xiàn)是用于多重簽名地址腳本。顧名思義,底層腳本需要多個(gè)簽名來(lái)證明所有權(quán),此后才能消費(fèi)資金。設(shè)計(jì)比特幣多重簽名特性是需要從總共N個(gè)密鑰中需要M個(gè)簽名(也被稱為“閾值”),被稱為M-N多簽名,其中M是等于或小于N。

紙錢包

    紙錢包是打印在紙張上的比特幣私鑰。有時(shí)紙錢包為了方便起見也包括對(duì)應(yīng)的比特幣地址,但這并不是必要的,因?yàn)榈刂房梢詮乃借€中導(dǎo)出。

    紙錢包是一個(gè)非常有效的建立備份或者線下存儲(chǔ)比特幣(即冷錢包)的方式。作為備份機(jī)制,一個(gè)紙錢包可以提供安全性,以防在電腦硬盤損壞、失竊或意外刪除的情況下造成密鑰的的丟失。

    作為一個(gè)冷存儲(chǔ)的機(jī)制,如果紙錢包密鑰在線下生成并永久不在電腦系統(tǒng)中存儲(chǔ),他們?cè)趹?yīng)對(duì)黑客攻擊,鍵盤記錄器,或其他在線電腦欺騙更有安全性。

    一個(gè)更復(fù)雜的紙錢包存儲(chǔ)系統(tǒng)使用BIP0038加密的私鑰。打印在紙錢包上的這些私鑰被其所有者記住的一個(gè)口令保護(hù)起來(lái)。沒有口令,這些被加密過的密鑰也是毫無(wú)用處的。

    雖然你可以多次存款到紙錢包中,但是你最好一次性提款,一次性提取里面所有的資金。因?yàn)槿绻闾崛〉慕痤~少于其中的金額的話,會(huì)生成一個(gè)找零地址。并且,你所用的電腦可能被病毒感染,那么就有可能泄露私鑰。一次性提款可以減少私鑰泄露的風(fēng)險(xiǎn),如果你所需的金額比較少,那么請(qǐng)把余額找零到另一個(gè)紙錢包中。

六、交易

比特幣交易的生命周期

    一筆比特幣交易的生命周期起始于它被創(chuàng)建的那一刻,也就是誕生

比特幣交易會(huì)被一個(gè)或者多個(gè)簽名加密,這些簽名標(biāo)志著對(duì)該交易指向的比特幣資金的使用許可。

接下來(lái),比特幣交易被廣播到比特幣網(wǎng)絡(luò)中。在比特幣網(wǎng)絡(luò)中,每一個(gè)節(jié)點(diǎn)(比特幣交易參與者)驗(yàn)證、并將交易在網(wǎng)絡(luò)中進(jìn)行廣播,直到這筆交易被網(wǎng)絡(luò)中大多數(shù)節(jié)點(diǎn)接收。

最終,比特幣交易被一個(gè)挖礦節(jié)點(diǎn)驗(yàn)證,并被添加到區(qū)塊鏈上一個(gè)記錄著許多比特幣交易的區(qū)塊中。

    比特幣交易可以被任何人在線上或線下創(chuàng)建,即便創(chuàng)建這筆交易的人不是這個(gè)賬戶的授權(quán)簽字人。類似于,一個(gè)負(fù)責(zé)應(yīng)付賬款的柜員可以創(chuàng)建比特幣交易,然后讓CEO對(duì)它進(jìn)行數(shù)字簽名,從而使之有效。

    一張支票是指定一個(gè)特定賬戶作為資金來(lái)源的,但是比特幣交易指定以往的一筆交易作為其資金來(lái)源,而不是一個(gè)特定賬戶。

    一旦一筆比特幣交易被創(chuàng)建,它會(huì)被資金所有者(們)簽名。如果它是合法創(chuàng)建并簽名的,則該筆交易現(xiàn)在就是有效的,它包含了轉(zhuǎn)移這筆資金所需要的所有信息。

    最終,有效的比特幣交易必須能接入比特幣網(wǎng)絡(luò),從而使之能被傳送,直至抵達(dá)下一個(gè)登記在公共總賬薄(區(qū)塊鏈)的挖礦節(jié)點(diǎn)。

廣播交易至比特幣網(wǎng)絡(luò)

    首先,一筆交易需要傳遞至比特幣網(wǎng)絡(luò),才能被傳播,也才能加入?yún)^(qū)塊鏈中。

    本質(zhì)上,一筆比特幣交易只是300到400字節(jié)的數(shù)據(jù),而且它們必須被發(fā)送到成千上萬(wàn)個(gè)比特幣節(jié)點(diǎn)中的任意一個(gè)。只要發(fā)送者能使用多于一個(gè)比特幣節(jié)點(diǎn)來(lái)確保這筆交易被傳播,那么發(fā)送者并不需要信任用來(lái)傳播該筆交易的單一節(jié)點(diǎn)。

    比特幣交易因此可以通過未加密網(wǎng)絡(luò)(例如WiFi、藍(lán)牙、NFC、ChirP、條形碼或者復(fù)制粘貼至一個(gè)網(wǎng)頁(yè)表格)被發(fā)送到比特幣網(wǎng)絡(luò)。在一些極端情況下,一筆比特幣交易可以通過封包無(wú)線電、衛(wèi)星或“短波、擴(kuò)頻或跳頻以避免被偵測(cè)或阻塞通信的方式進(jìn)行傳輸。一筆比特幣交易甚至可被編為文字信息中的表情符號(hào)并被發(fā)表到在線論壇,或被發(fā)送成一條短信或一條Skype聊天信息。因?yàn)楸忍貛艑⒔疱X變成了一種數(shù)據(jù)結(jié)構(gòu),所以在本質(zhì)上是不可能阻止任何人創(chuàng)建并執(zhí)行比特幣交易的。

    一旦一筆比特幣交易被發(fā)送到任意一個(gè)連接至比特幣網(wǎng)絡(luò)的節(jié)點(diǎn),這筆交易將會(huì)被該節(jié)點(diǎn)驗(yàn)證。如果交易被驗(yàn)證有效,該節(jié)點(diǎn)將會(huì)將這筆交易傳播到這個(gè)節(jié)點(diǎn)所連接的其他節(jié)點(diǎn);同時(shí),交易發(fā)起者會(huì)收到一條表示交易有效并被接受的返回信息。如果這筆交易被驗(yàn)證為無(wú)效,這個(gè)節(jié)點(diǎn)會(huì)拒絕接受這筆交易且同時(shí)返回給交易發(fā)起者一條表示交易被拒絕的信息。

    為了避免垃圾信息的濫發(fā)、拒絕服務(wù)攻擊或其他針對(duì)比特幣系統(tǒng)的惡意攻擊,每一個(gè)節(jié)點(diǎn)在傳播每一筆交易之前均進(jìn)行獨(dú)立驗(yàn)證。 <font color='red'>一個(gè)異常交易所能到達(dá)的節(jié)點(diǎn)不會(huì)超過一個(gè)</font>。

交易結(jié)構(gòu)

    一筆比特幣交易是一個(gè)含有輸入值和輸出值的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)植入了將一筆資金從初始點(diǎn)(輸入值)轉(zhuǎn)移至目標(biāo)地址(輸出值)的代碼信息。

    比特幣交易的輸入值和輸出值與賬號(hào)或者身份信息無(wú)關(guān)。應(yīng)該將它們理解成一種被特定秘密信息鎖定的一定數(shù)量的比特幣。只有擁有者或知曉這個(gè)秘密信息的人可以解鎖。

    字段:版本(4bytes,明確這筆交易參照的規(guī)則)、輸入量(1-9bytes,被包含的輸入的數(shù)量)、輸入(不定bytes,一個(gè)或多個(gè)交易輸入)、輸出量(1-9bytes,被包含的輸出的數(shù)量)、輸出(不定bytes,一個(gè)或多個(gè)交易輸出)、時(shí)鐘時(shí)間(4bytes, 一個(gè)UNIX時(shí)間戳或區(qū)塊號(hào))

交易的輸入和輸出

    比特幣交易的基本單位是未經(jīng)使用的一個(gè)交易輸出,簡(jiǎn)稱UTXO。UTXO是不能再分割、被所有者鎖住或記錄于區(qū)塊鏈中的并被整個(gè)網(wǎng)絡(luò)識(shí)別成貨幣單位的一定量的比特幣貨幣。

    實(shí)際上,并不存在儲(chǔ)存比特幣地址或賬戶余額的地點(diǎn),只有被所有者鎖住的、分散的UTXO。

    “一個(gè)用戶的比特幣余額”,這個(gè)概念是一個(gè)通過比特幣錢包應(yīng)用創(chuàng)建的派生之物。比特幣錢包通過掃描區(qū)塊鏈并聚合所有屬于該用戶的UTXO來(lái)計(jì)算該用戶的余額。

    <font color='red'>在比特幣的世界里既沒有賬戶,也沒有余額,只有分散到區(qū)塊鏈里的UTXO</font>。一個(gè)UTXO可以是一“聰”的任意倍。

    盡管UTXO可以是任意值,但只要它被創(chuàng)造出來(lái)了,就像不能被切成兩半的硬幣一樣不可再分了。如果一個(gè)UTXO比一筆交易所需量大,它仍會(huì)被當(dāng)作一個(gè)整體而消耗掉,但同時(shí)會(huì)在交易中生成零頭。大部分比特幣交易都會(huì)產(chǎn)生找零。

    一筆比特幣交易可以有任意數(shù)值,但必須從用戶可用的UTXO中創(chuàng)建出來(lái)。用戶不能再把UTXO進(jìn)一步細(xì)分,就像不能把一元紙幣撕開而繼續(xù)當(dāng)貨幣使用一樣。用戶的錢包應(yīng)用通常會(huì)從用戶可用的UTXO中選取多個(gè)可用的個(gè)體來(lái)拼湊出一個(gè)大于或等于一筆交易所需的比特幣量。

    被交易消耗的UTXO被稱為交易輸入,由交易創(chuàng)建的UTXO被稱為交易輸出。通過這種方式,一定量的比特幣價(jià)值在不同所有者之間轉(zhuǎn)移,并在交易鏈中消耗和創(chuàng)建UTXO。一筆比特幣交易通過使用所有者的簽名來(lái)解鎖UTXO,并通過使用新的所有者的比特幣地址來(lái)鎖定并創(chuàng)建UTXO。

    對(duì)于輸出和輸入鏈來(lái)說(shuō),有一個(gè)例外,它是一種特殊的交易類型,稱為Coinbase交易。這是每個(gè)區(qū)塊中的首個(gè)交易。這種交易存在的原因是作為對(duì)挖礦的獎(jiǎng)勵(lì)而產(chǎn)生全新的可用于支付的比特幣給“贏家”礦工。這也就是為什么比特幣可以在挖礦過程中被創(chuàng)造出來(lái)。

    交易輸出包含兩部分:

一定量的比特幣,被命名為“聰”,是最小的比特幣單位;

一個(gè)鎖定腳本,也被當(dāng)作是“障礙”,提出支付輸出所必須被滿足的條件以“鎖住”這筆總額

    交易輸出把用聰表示的一定數(shù)量的比特幣,和特定的定義了支付輸出所必須被滿足的條件的障礙,或者叫鎖定腳本,關(guān)聯(lián)到了一起。在大多數(shù)情況下,鎖定腳本會(huì)把輸出鎖在一個(gè)特定的比特幣地址上,從而把一定數(shù)量的比特幣的所有權(quán)轉(zhuǎn)移到新的所有者上。

    交易輸入是指向UTXO的指針。它們指向特定的UTXO,并被交易哈希和在區(qū)塊鏈中記錄UTXO的序列號(hào)作為參考。

    當(dāng)用戶付款時(shí),他的錢包通過選擇可用的UTXO來(lái)構(gòu)造一筆交易。比如說(shuō),要支付0.015比特幣,錢包應(yīng)用會(huì)選擇一個(gè)0.01 UTXO和一個(gè)0.005 UTXO,使用它們加在一起來(lái)得到想要的付款額。

    一旦UTXO被選中,錢包會(huì)為每個(gè)UTXO生成包含簽名的解鎖腳本,由此讓它們變得可以通過滿足鎖定腳本的條件來(lái)被支付。錢包把這些UTXO作為參考,并且連同解鎖腳本一起作為輸入加到交易中。

交易費(fèi)用

    大多數(shù)交易包含交易費(fèi),這是為了在網(wǎng)絡(luò)安全方面給比特幣礦工一種補(bǔ)償。大多數(shù)錢包自動(dòng)計(jì)算并計(jì)入交易費(fèi)。但是,如果你編程構(gòu)造交易,或者使用命令行接口,你必須手動(dòng)計(jì)算并計(jì)入這些費(fèi)用。

    交易費(fèi)可當(dāng)作是為了包含(挖礦)一筆交易到下一個(gè)區(qū)塊中的一種鼓勵(lì),也可當(dāng)作是對(duì)于欺詐交易和任何種類的系統(tǒng)濫用,在每一筆交易上通過征收一筆小成本的稅而造成的一種妨礙。交易費(fèi)被挖出這個(gè)區(qū)塊的礦工得到,并且記錄在這個(gè)交易的區(qū)塊鏈中。

    交易費(fèi)不足或者沒有交易費(fèi)的交易可能會(huì)被推遲,基于盡力而為的原則在幾個(gè)區(qū)塊之后被處理,甚至可能根本不被處理。交易費(fèi)不是強(qiáng)制的,而且沒有交易費(fèi)的交易也許最終會(huì)被處理,但是,包含交易費(fèi)將提高處理優(yōu)先級(jí)。

    起初,交易費(fèi)是網(wǎng)絡(luò)中的一個(gè)固定常數(shù)。漸漸地,交易費(fèi)的結(jié)構(gòu)被放寬了,以便被市場(chǎng)基于網(wǎng)絡(luò)容量和交易量而強(qiáng)制影響。目前最小交易費(fèi)被固定在每千字節(jié)0.0001比特幣,或者說(shuō)是每千字節(jié)萬(wàn)分之一比特幣,最近一次改變是從千分之一比特幣減少到這個(gè)數(shù)值的。大多數(shù)交易少于一千字節(jié),但是那些包含多個(gè)輸入和輸出的交易尺寸可能更大。在未來(lái)的比特幣協(xié)議修訂版中,錢包應(yīng)用預(yù)計(jì)會(huì)使用統(tǒng)計(jì)學(xué)分析,基于最近的幾筆交易的平均費(fèi)用,來(lái)計(jì)算最恰當(dāng)?shù)馁M(fèi)用并附在交易上。

    交易的數(shù)據(jù)結(jié)構(gòu)沒有交易費(fèi)的字段。相反地,交易費(fèi)通過所有輸入的總和,以及所有輸出的總和之間的差來(lái)表示。從所有輸入中扣掉所有輸出之后的多余的量會(huì)被礦工收集走。

    如果你忘記了在手動(dòng)構(gòu)造的交易中增加找零的輸出,系統(tǒng)會(huì)把找零當(dāng)作交易費(fèi)來(lái)處理。舉例來(lái)說(shuō),如果你消耗了一個(gè)20比特幣的UTXO來(lái)完成1比特幣的付款,你必須包含一筆19比特幣的找零回到你的錢包。否則,那剩下的19比特幣會(huì)被當(dāng)作交易費(fèi),并且會(huì)被挖出你的交易到一個(gè)區(qū)塊中的礦工收走。盡管你會(huì)受到高優(yōu)先級(jí)的處理,并且讓一個(gè)礦工喜出望外,但這很可能不是你想要的。

    高交易費(fèi)不是因?yàn)楦兜腻X很多,而是因?yàn)樗慕灰缀軓?fù)雜并且尺寸很大,交易費(fèi)是與參加交易的比特幣值無(wú)關(guān)的。

交易鏈條和孤立交易

    當(dāng)一條交易鏈被整個(gè)網(wǎng)絡(luò)傳送時(shí),他們并不能總是按照相同的順序到達(dá)目的地。有時(shí),子交易在父交易之前到達(dá)。在這種情況下,節(jié)點(diǎn)會(huì)首先收到一個(gè)子交易,而不能找到他參考的父交易。節(jié)點(diǎn)不會(huì)立即拋棄這個(gè)子交易,而是放到一個(gè)臨時(shí)池中,并等著接收它的父交易,與此同時(shí)廣播這個(gè)子交易給其他節(jié)點(diǎn)。沒有父交易的交易池被稱作孤立交易池。

    內(nèi)存中儲(chǔ)存的孤立交易數(shù)量是有限制的,這是為了防止針對(duì)比特幣節(jié)點(diǎn)的拒絕服務(wù)攻擊(DoS)。這個(gè)限制被定義在比特幣涉及到的客戶端的源代碼中的MAX_ORPHAN_TRANSACTIONS。

比特幣交易腳本和腳本語(yǔ)言

    比特幣客戶端通過執(zhí)行一個(gè)用類Forth腳本語(yǔ)言編寫的腳本驗(yàn)證比特幣交易。鎖定腳本被寫入U(xiǎn)TXO,同時(shí)它往往包含一個(gè)用同種腳本語(yǔ)言編寫的簽名。

    當(dāng)一筆比特幣交易被驗(yàn)證時(shí),每一個(gè)輸入值中的解鎖腳本被與其對(duì)應(yīng)的鎖定腳本同時(shí)(互不干擾地)執(zhí)行,從而查看這筆交易是否滿足使用條件。

    大多數(shù)經(jīng)比特幣網(wǎng)絡(luò)處理的交易是以“Alice付給Bob”的形式存在的。同時(shí),它們是以一種稱為“P2PKH”(Pay-to-Public-Key-Hash)腳本為基礎(chǔ)的。然而,通過使用腳本來(lái)鎖定輸出和解鎖輸入意味著通過使用編程語(yǔ)言,比特幣交易可以包含無(wú)限數(shù)量的條件。

    比特幣交易驗(yàn)證并不基于一個(gè)不變的模式,而是通過運(yùn)行腳本語(yǔ)言來(lái)實(shí)現(xiàn)。這種語(yǔ)言可以表達(dá)出多到數(shù)不盡的條件變種。這也是比特幣作為一種“可編程的貨幣”所擁有的權(quán)力。

腳本創(chuàng)建(鎖定與解鎖)

    比特幣的交易驗(yàn)證引擎依賴于兩類腳本來(lái)驗(yàn)證比特幣交易:一個(gè)鎖定腳本和一個(gè)解鎖腳本。

    鎖定腳本是一個(gè)放在一個(gè)輸出值上的“障礙”,同時(shí)它明確了今后花費(fèi)這筆輸出的條件。

    解鎖腳本是一個(gè)“解決”或滿足被鎖定腳本在一個(gè)輸出上設(shè)定的花費(fèi)條件的腳本,同時(shí)它將允許輸出被消費(fèi)。解鎖腳本是每一筆比特幣交易輸出的一部分,而且往往含有一個(gè)被用戶的比特幣錢包(通過用戶的私鑰)生成的數(shù)字簽名。由于解鎖腳本常常包含一個(gè)數(shù)字簽名,因此它曾被稱作ScriptSig。并非所有解鎖腳本都一定會(huì)包含簽名。

    每一個(gè)比特幣客戶端會(huì)通過同時(shí)執(zhí)行鎖定和解鎖腳本來(lái)驗(yàn)證一筆交易。對(duì)于比特幣交易中的每一個(gè)輸入,驗(yàn)證軟件會(huì)先檢索輸入所指向的UTXO。這個(gè)UTXO包含一個(gè)定義了花費(fèi)條件的鎖定腳本。接下來(lái),驗(yàn)證軟件會(huì)讀取試圖花費(fèi)這個(gè)UTXO的輸入中所包含的解鎖腳本,并執(zhí)行這兩個(gè)腳本。

    首先,使用堆棧執(zhí)行引擎執(zhí)行解鎖腳本。如果解鎖腳本在執(zhí)行過程中未報(bào)錯(cuò)(沒有懸空操作符),主堆棧(非其它堆棧)將被復(fù)制,然后腳本將被執(zhí)行。如果采用從解鎖腳本處復(fù)制而來(lái)的數(shù)據(jù)執(zhí)行鎖定腳本的結(jié)果為真,那么解鎖腳本就成功地滿足了鎖定腳本所設(shè)置的條件,因而,該輸入是一個(gè)能使用該UTXO的有效授權(quán)。如果在執(zhí)行完組合腳本后的結(jié)果不是真,那么輸入就不是有效的,因?yàn)樗⑽茨軡M足UTXO中所設(shè)置的使用該筆資金的條件。

腳本語(yǔ)言

    比特幣交易腳本語(yǔ)言,也稱為腳本,是一種基于逆波蘭表示法的基于堆棧的執(zhí)行語(yǔ)言。

    比特幣腳本語(yǔ)言被稱為基于棧語(yǔ)言,因?yàn)樗褂玫臄?shù)據(jù)結(jié)構(gòu)被稱為棧。

    如果堆棧頂部的結(jié)果顯示為真(標(biāo)記為{0×01}),即為任何非零值或腳本執(zhí)行后堆棧為空情形,則交易有效。如果堆棧頂部的結(jié)果顯示為假(0字節(jié)空值,標(biāo)記為{})或腳本執(zhí)行被操作符禁止。

圖靈非完備性

    比特幣腳本語(yǔ)言包含許多操作,但都故意限定為一種重要的方式——沒有循環(huán)或者復(fù)雜流控制功能以外的其他條件的流控制。

    這樣就保證了腳本語(yǔ)言的圖靈非完備性,這意味著腳本的復(fù)雜性有限,交易可執(zhí)行的次數(shù)也可預(yù)見。

    腳本并不是一種通用語(yǔ)言,施加的這些限制確保該語(yǔ)言不被用于創(chuàng)造無(wú)限循環(huán)或其它類型的邏輯炸彈,這樣的炸彈可以植入在一筆交易中,通過引起拒絕服務(wù)的方式攻擊比特幣網(wǎng)絡(luò)。

    受限制的語(yǔ)言能防止交易激活機(jī)制被人當(dāng)作薄弱環(huán)節(jié)而加以利用。

非主權(quán)驗(yàn)證

    比特幣交易腳本語(yǔ)言是無(wú)國(guó)家主權(quán)的,沒有國(guó)家能凌駕于腳本之上,也沒有國(guó)家會(huì)在腳本被執(zhí)行后對(duì)其進(jìn)行保存。所以需要執(zhí)行腳本的所有信息都已包含在腳本中。

    如果您的系統(tǒng)對(duì)一個(gè)腳本進(jìn)行驗(yàn)證,可以確信的是每一個(gè)比特幣網(wǎng)絡(luò)中的其他系統(tǒng)也將對(duì)其進(jìn)行驗(yàn)證,這意味著一個(gè)有效的交易對(duì)每個(gè)人而言都是有效的,而且每一個(gè)人都明白這一點(diǎn)。<font color='red'>這種對(duì)于結(jié)果的可預(yù)見性是比特幣系統(tǒng)的一項(xiàng)重要良性特征</font>。

Windows技巧大全二

1、批量重命名文件

Windows提供了非常方便的批量重命名文件的功能,在資源管理器中同時(shí)選擇幾個(gè)文件,接著按F2鍵,然后重命名這些文件中的一個(gè),這樣所有被選擇的文件將會(huì)被重命名為新的文件名(在末尾處加上遞增的數(shù)字)。

2、快捷復(fù)制文件路徑、在新的進(jìn)程打開文件夾

當(dāng)我們想要說(shuō)明一個(gè)具體的文件在哪里的時(shí)候,把“錯(cuò)綜復(fù)雜”的路徑告訴別人是非常麻煩的事情。其實(shí)只需要按住“Shift”鍵,右鍵點(diǎn)擊文件或文件夾,選擇“復(fù)制為路徑”就可以粘貼給你的朋友啦

如果你右鍵的是文件夾的話還會(huì)有“在新的進(jìn)程中打開”的選項(xiàng),這樣一個(gè)文件夾的崩潰就不會(huì)導(dǎo)致全部文件夾的崩潰(肯定有很多人遇到過資源管理器“未響應(yīng)”的情況吧。

3、特殊字符輸入:

這些符號(hào)是怎么輸入的知道嘛?今天來(lái)教大家一個(gè)簡(jiǎn)單實(shí)用的方法——字符映射表。Win R輸入“charmap”就可以調(diào)出它,找到自己需要的符號(hào)啦~選擇復(fù)制就OK!

4、windows窗口操作

如果你屏幕上有很多窗口都最大化了,雖然你只能看到當(dāng)前的程序,但是被擋在后面最大化的窗口也會(huì)占用很多系統(tǒng)資源,這時(shí)候如果你按下Win Home,就可以將除當(dāng)前窗口外其他所有程序都最小化(拖住當(dāng)前窗口晃動(dòng)可以達(dá)到同樣效果),節(jié)約系統(tǒng)資源快速有效,再次按下Win Home(或再次晃動(dòng))可以恢復(fù)之前窗口。

當(dāng)然你還可以試試Win ↑,Win ↓,Win ←,Win →;win10還有Win →↑,Win ←↑……依次類推

如果你有兩個(gè)或者更多的顯示器,試試 WIN SHIFT 左或者右 可以把窗口從一個(gè)移動(dòng)到另一個(gè)中去。

5、快速恢復(fù)已關(guān)閉網(wǎng)頁(yè)

如果不小心把網(wǎng)頁(yè)關(guān)了,你知道怎么找回來(lái)嗎?記得,只要按 "Ctrl Shift T",就能立即開啟剛剛關(guān)上的頁(yè)面哦

Ctrl Shift T

6、.快速打開一組網(wǎng)頁(yè)

如果每天都要瀏覽一些固定的網(wǎng)頁(yè),可以網(wǎng)頁(yè)放入收藏欄的文件夾中,然后右鍵文件夾,選擇"打開全部"就可以一次性把你所要看的網(wǎng)頁(yè)都打開。(360瀏覽器,其他瀏覽器類似)

7、定時(shí)關(guān)機(jī),遠(yuǎn)程桌面關(guān)機(jī)

建一個(gè)文本文件然后輸入shutdown -s -t 60 保存,把文本文件的txt格式改為bat,-t 后面的參數(shù)表示要延遲多少秒。運(yùn)行腳本后60秒關(guān)機(jī)。

把參數(shù)設(shè)置為1秒,再文件名命名為“打開有驚喜.bat”……噗,太壞了!

8、快速預(yù)覽文件類容

按ALT P隱藏或者顯示資源管理器的預(yù)覽窗口

可以預(yù)覽的文件類型有很多(具體哪些可以自己試試,文件大的稍微需要等一下才顯示),還可以在預(yù)覽窗口類直接操作(翻頁(yè)、復(fù)制什么 的),不用每次都打開查看,很是方便!

9、RoboCopy-多線程加快Windows中文件復(fù)制/傳輸功能

如果用戶是個(gè)更高級(jí)使用者,用戶肯定聽說(shuō)過Robocopy。自Windows7起就內(nèi)置了此功能,用戶可以通過命令行來(lái)執(zhí)行多線程復(fù)制。用戶可以選擇任意數(shù)目的線程,就像"/MT[:n],它的數(shù)值范圍在1到128之間。

在命令行輸入ROBOCOPY/?有具體用法,不建議普通用戶使用,普通用戶還是老老實(shí)實(shí)圖形界面比較好

10、放大鏡

按WIN 加號(hào)來(lái)調(diào)出放大鏡,按WIN 加號(hào)或者減號(hào)來(lái)進(jìn)行放大或者縮小。用戶可以縮放桌面上的任何地方,用戶還可以配置放大鏡。能選擇反相顏色,跟隨鼠標(biāo)指針,跟隨鍵盤焦點(diǎn)或者文本的輸入點(diǎn)。

附上放大鏡常用的快捷鍵:

Win鍵 加號(hào)或者減號(hào) 放大或縮小

Win鍵 Esc 退出放大鏡

Ctrl Alt 空格鍵 顯示鼠標(biāo)指針

Ctrl Alt F 切換到全屏模式

Ctrl Alt L 切換到鏡頭模式

Ctrl Alt D 切換到??磕J?/p>

Ctrl Alt I 反色

Ctrl 箭頭鍵 按箭頭鍵方向平移

Ctrl Alt R 調(diào)整鏡頭大小

11、步驟記錄器

寫教程需要記錄步驟?問問題截圖不夠詳細(xì)?你需要一個(gè)步驟記錄器!步驟記錄器是一個(gè)強(qiáng)大的工具,而且是Windows內(nèi)置的!按WIN R輸入PSR.exe運(yùn)行它。它會(huì)記錄用戶所有的操作,并且儲(chǔ)存為mht格式的文件,可以直接在瀏覽器中查看!

這里有個(gè)我錄制的簡(jiǎn)單測(cè)試:步驟記錄測(cè)試.zip

12、快速啟動(dòng)鎖定在任務(wù)欄中的程序

“Win”鍵 數(shù)字鍵(0~9)可以快速啟動(dòng)任務(wù)欄中的由該數(shù)字所表示位置處的程序。

如按“Win鍵 4”即可啟動(dòng)Edge瀏覽器,按“Win鍵 0”即可啟動(dòng)QQ(只支持前10個(gè),第十個(gè)對(duì)應(yīng)數(shù)字鍵“0”。

進(jìn)階使用方式:

Shift Window鍵 數(shù)字:?jiǎn)?dòng)鎖定到任務(wù)欄中的由該數(shù)字所表示位置處的程序的新實(shí)例(主鍵盤區(qū)上的數(shù)字)

Alt Windows鍵 數(shù)字:打開鎖定到任務(wù)欄中的由該數(shù)字所表示位置處的程序的跳轉(zhuǎn)列表 (主鍵盤區(qū)上的數(shù)字)

13、任務(wù)欄固定常用文件夾

有時(shí)候需要經(jīng)常打開某個(gè)文件夾,這個(gè)文件夾的路徑有時(shí)候還比較深。每次都要打開一層層的文件夾很麻煩。這時(shí)候只用把這個(gè)文件夾拖入到任務(wù)欄上的文件夾圖標(biāo)就可以被固定住,以后就可以直接在任務(wù)欄上右鍵打開。取消固定的話右鍵取消即可。

當(dāng)然前提是你的任務(wù)欄固定的有文件夾圖標(biāo)。

免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!