Tìm hiểu về Ethereum

Tìm hiểu về Ethereum

Rate this post

Rõ ràng, công nghệ blockchain đã xuất hiện cùng với Bitcoin vào năm 2009. Sau khi Bitcoin đứng trước thử thách của thời gian, mọi người tin tưởng vào tiềm năng của chuỗi khối. Các trường hợp sử dụng bây giờ đã vượt ra ngoài ngân hàng và tài chính các ngành và đã bao trùm các ngành khác như chuỗi cung ứng, bán lẻ, thương mại điện tử, chăm sóc sức khỏe, năng lượng và các lĩnh vực chính phủ. 

Các bài viết liên quan:

Đây là bởi vì các hương vị khác nhau của blockchain đã xuất hiện và giải quyết cụ thể vấn đề kinh doanh. Tuy nhiên, có những nền tảng blockchain công khai chẳng hạn như Ethereum cho phép xây dựng các trường hợp sử dụng phi tập trung khác nhau trên cùng một nền tảng Ethereum công khai. 

Từ Bitcoin đến Ethereum

Với Bitcoin, giao dịch ngang hàng phi tập trung của tiền điện tử là có thể. Mọi người nhận ra rằng blockchain có thể được sử dụng để giao dịch và theo dõi bất kỳ thứ gì có giá trị, không chỉ tiền điện tử. 

Mọi người bắt đầu khám phá xem cùng một mạng Bitcoin có thể được sử dụng cho bất kỳ trường hợp sử dụng nào khác. Để cung cấp cho bạn một ví dụ, “bằng chứng về Sự tồn tại ”là một trong những trường hợp sử dụng như vậy khi hàm băm của tài liệu được đưa vào trong mạng blockchain Bitcoin để sau này bất kỳ ai cũng có thể xác minh rằng một tượng đài như vậy đã tồn tại trong thời gian như vậy và như vậy. 

Vitalik Buterin đã giới thiệu nền tảng chuỗi khối Ethereum có thể tạo điều kiện giao dịch không chỉ tiền, mà còn cả cổ phiếu, đất đai, nội dung kỹ thuật số, xe cộ và nhiều phương tiện khác có một số giá trị nội tại. Hãy xem Hình 4-1.

Tìm hiểu về Ethereum

Hình 4-1. Nhiều ứng dụng phi tập trung trên một Ethereum nền tảng

Giống như Bitcoin, Ethereum là một nền tảng blockchain công khai với một triết lý thiết kế. Cách tiếp cận sáng tạo nhất là xây dựng một sự trừu tượng lớp để các giao dịch từ các ứng dụng khác nhau được tổng quát hóa thành mã chương trình có thể chạy trên tất cả các nút Ethereum. Ngay cả trong Ethereum, các thợ đào tạo ra Ether, một loại tiền điện tử có thể giao dịch vì nó mạng blockchain công cộng tự bền vững. Bất kỳ ứng dụng nào đang chạy trên Ethereum phải trả phí giao dịch mà cuối cùng các thợ đào nhận được chạy các nút và duy trì toàn bộ mạng.

Xem thêm Cấu trúc Blockchain của bitcoin

Tham gia blockchain Ethereum

Chúng tôi đã tìm hiểu về mục tiêu đằng sau chuỗi khối Ethereum và triết lý thiết kế. Để có thể hiểu và đánh giá cao thế hệ tiếp theo này blockchain và xây dựng các ứng dụng phi tập trung trên đó, chúng ta sẽ tìm hiểu về các thành phần cốt lõi của Ethereum rất chi tiết trong phần này:

Ethereum Blockchain

Cấu trúc dữ liệu chuỗi khối Ethereum khá giống với cấu trúc của Bitcoin, ngoại trừ việc có nhiều thông tin hơn được chứa trong khối để làm cho nó mạnh mẽ hơn và giúp duy trì trạng thái đúng cách. chúng tôi sẽ tìm hiểu thêm về các trạng thái Ethereum trong các phần sau. Hãy để chúng tôi tập trung nhiều hơn vào cấu trúc dữ liệu blockchain và tiêu đề trong phần này.Trong Bitcoin, chỉ có một gốc Merkle trong tiêu đề khối cho tất cả giao dịch trong một khối. Trong Ethereum, có thêm hai gốc Merkle, vì vậy có tổng cộng ba gốc Merkle như sau:

• stateRoot : Nó giúp duy trì trạng thái chung.

• transaction Root : Nó là để theo dõi và đảm bảo tính toàn vẹn của tất cả các giao dịch trong một khối, tương tự như Bitcoin Gốc Merkle.

• receipt Root : Nó là mã băm gốc của trie biên nhận tương ứng với các giao dịch trong một khối Chúng ta sẽ xem xét các gốc Merkle này trong các phần tương ứng của chúng của thông tin tiêu đề khối. Để hiểu rõ hơn, hãy xem

Tìm hiểu về Ethereum

Hình 4-2. Cấu trúc dữ liệu blockchain của Ethereum

Mọi khối thường bao gồm tiêu đề khối, danh sách giao dịch, các chú danh sách và dữ liệu bổ sung tùy chọn. Bây giờ chúng ta hãy xem xét các trường tiêu đề để hiểu ý nghĩa của chúng và mục đích của chúng khi xuất hiện trong tiêu đề.

Trong khi bạn làm như vậy, hãy nhớ rằng có thể có một số biến thể nhỏ của những tên ở những nơi khác nhau hoặc thứ tự mà chúng được ghi trước có thể khác nhau ở những nơi khác nhau. Chúng tôi khuyên bạn nên xây dựng một hiểu biết về các lĩnh vực này để mọi thuật ngữ khác nhau mà bạn có thể đi qua sẽ không làm phiền bạn nhiều.

Xem thêm Hàm băm (hash function) là gì?

Phần-1: Chặn siêu dữ liệu

parentHash: Keccak 256-bit băm của khối mẹ tiêu đề, giống như phong cách của Bitcoin

timestamp: Khối hiện tại dấu thời gian Unix

number: Số khối của khối hiện tại

• Beneficiary: Địa chỉ 160 bit của tài khoản “tác giả” chịu trách nhiệm tạo khối hiện tại mà tất cả phí từ việc khai thác thành công một khối được thu

Phần-2: Tham chiếu dữ liệu

transaction Root: Hàm băm gốc Keccak 256-bit (Merkle root) của bộ ba giao dịch được điền với tất cả các giao dịch trong khối này

ommersHash: Nó còn được biết đến với cái tên khác là “Uncle Hash”. Nó là băm của phân đoạn chú của khối, tức là, Keccak 256-bit băm của phần danh sách ommers của điều này khối (các khối được biết là có cha mẹ bằng cha mẹ của khối hiện tại).

extraData: Mảng byte tùy ý chứa dữ liệu có liên quan đến khối này. Kích thước của dữ liệu này được giới hạn ở 32 byte (256-bit). Khi viết bài này, có khả năng là trường này có thể trở thành “extraData Hash”, sẽ trỏ đến “extraData” chứa bên trong khối. extraData có thể là dữ liệu thô, được tính phí như nhau lượng khí đốt của dữ liệu giao dịch.

Phần-3: Thông tin thực hiện giao dịch

stateRoot: Băm gốc Keccak 256-bit (Merkle root) của trạng thái cuối cùng sau khi xác thực và thực thi tất cả giao dịch của khối này

receipt Root: Băm gốc Keccak 256-bit (Merkle root) của bộ ba biên nhận được điền với người nhận của mỗi giao dịch trong khối này

logBloom: Bộ lọc Bloom tích lũy cho mỗi Giao dịch ‘biên lai’ Blooms, tức là, “HOẶC” của tất cả các Blooms cho các giao dịch trong khối

• gasUsed : Tổng lượng gas được sử dụng qua mỗi các giao dịch trong khối này

• gasLimit : Lượng khí tối đa mà khối này có thể sử dụng (giá trị động tùy thuộc vào hoạt động trong mạng lưới)

Phần-4: Đồng thuận-thông tin hệ thống con 

difficult: Giới hạn độ khó cho khối này được tính toán từ độ khó của khối trước và dấu thời gian 

mixHash: Hàm băm trộn 256 bit kết hợp với ‘nonce’ cho PoW của khối này

nonce: Nonce là một băm 64 bit được kết hợp với mixHash và có thể được sử dụng làm xác minh PoW

Tài khoản Ethereum

Các tài khoản Ethereum, không giống như Bitcoin, không ở dạng chưa được chi tiêu đầu ra giao dịch (UTXO). Trong chương Bitcoin, chúng ta đã học được rằng Bitcoin thực sự tồn tại dưới dạng giao dịch có chủ sở hữu (khóa công khai của chủ sở hữu, địa chỉ 20 byte) và một giá trị. 

Chủ sở hữu có thể chi tiêu giao dịch nếu họ có khóa cá nhân hợp lệ cho giao dịch họ đang cố gắng chi tiêu. Do đó, Bitcoin là một hệ thống chuyển đổi trạng thái, nơi “Trạng thái” đề cập đến tập hợp tất cả các UTXO. Mỗi khi một khối được khai thác, một thay đổi trạng thái xảy ra bởi vì mỗi khối chứa một loạt các giao dịch trong đó mỗi giao dịch tập hợp (các) UTXO và tạo ra (các) UTXO. 

Xem thêm Cấu trúc Blockchain của bitcoin

Ghi chú ở đây trạng thái không được mã hóa bên trong các khối. Vì vậy, không có khái niệm của số dư tài khoản như vậy trong thiết kế của Bitcoin. Ethereum trên mặt khác hand là trạng thái, và đơn vị cơ bản của nó là tài khoản. Mỗi tài khoản có một trạng thái được liên kết với nó và cũng có địa chỉ 20 byte (160 bit) mà qua đó nó được xác định và tham chiếu. Mục đích của blockchain trong Ethereum là để theo dõi các thay đổi trạng thái. 

Có hai loại Ethereum tài khoản:

  1. Tài khoản được sở hữu bên ngoài (EOA) : Các tài khoản này còn được gọi là “tài khoản đơn giản” thường là thuộc sở hữu của người dùng hoặc thiết bị kiểm soát các tài khoản này sử dụng Khóa riêng. Các EOA có thể gửi các giao dịch tới các EOA hoặc Tài khoản hợp đồng khác bằng cách ký với một khóa riêng. Giao dịch giữa hai EOA là thường để chuyển bất kỳ hình thức giá trị nào. Mặt khác

khi EOA thực hiện giao dịch đối với Hợp đồng Tài khoản, mục đích là để kích hoạt “mã” bên trong Tài khoản Hợp đồng.

  1. Tài khoản hợp đồng : Những tài khoản này chỉ được kiểm soát bởi mã có trong chúng. Mã này bên trong Tài khoản hợp đồng được gọi là “hợp đồng thông minh” Chúng thường được kích hoạt khi giao dịch được gửi đi vào Tài khoản Hợp đồng bởi EOA hoặc bởi các Tài khoản hợp đồng. Mặc dù các tài khoản hợp đồng có khả năng thực hiện các lôgic kinh doanh phức tạp thông qua mã chứa chúng, chúng không thể tạo mới giao dịch của riêng họ và luôn phụ thuộc vào EOAs. Tất cả những gì họ có thể làm là phản hồi các giao dịch khác (rõ ràng là bằng cách thực hiện các giao dịch) theo logic được mã hóa trong “mã” của họ.

Hãy xem ba trường hợp sau (Hình  4-3 đến 4-5) để có được hiểu rõ hơn về giao tiếp giữa EOA và Tài khoản hợp đồng.

Giao dịch từ EOA đến EOA 

Tìm hiểu về Ethereum

Hình 4-3. Giao dịch từ EOA sang EOA

EOA to Contract Account Transaction:

Tìm hiểu về Ethereum

Hình 4-4. Giao dịch tài khoản hợp đồng từ EOA đến tài khoản

EOA đến Tài khoản Hợp đồng đến giao dịch Tài khoản Hợp đồng khác

Tìm hiểu về Ethereum

Hình 4-5. EOA đến Tài khoản Hợp đồng với Giao dịch Tài khoản Hợp đồng

Để các đại diện trước không gây nhầm lẫn, hãy lưu ý rằng các Tài khoản Hợp đồng là nội bộ và thông tin liên lạc giữa họ cũng vậy. Không giống như tài khoản EOA nơi EOA thực hiện giao dịch được đưa vào blockchain, Tài khoản hợp đồng và các giao dịch giữa chúng là những hiện tượng bên trong.

Xem thêm Thuật toán mã hóa khối(block cipher) – DES

Trạng thái tài khoản

Chúng tôi biết rằng mọi tài khoản đều có trạng thái được liên kết với nó. Chúng tôi cũng đã xem xét hai loại tài khoản tồn tại với Ethereum, một là một Tài khoản hợp đồng và tài khoản kia là một Tài khoản được sở hữu bên ngoài hoặc EOA. Bất kể loại tài khoản nào, chúng đều được theo dõi bởi “stateRoot” Merkle root trong tiêu đề khối và có thể xuất hiện như trong Hình 4-6

Tìm hiểu về Ethereum

Hình 4-6. Phóng to đại diện trạng thái tài khoản

Như bạn có thể thấy trong hình, bất kể tài khoản có phải là tài khoản EOA hoặc hoặc một Tài khoản Hợp đồng, nó có bốn thành phần sau:

Số dư tài khoản : Tổng số  “Ether” trong tài khoản. Chính xác hơn là số Wei sở hữu theo địa chỉ (1ETH = 10 18 Ngụy)

• CodeHash : Đây là hàm băm của “mã”. Mỗi Tài khoản hợp đồng có “mã” trong đó được thực thi trên EVM. Hàm băm của mã này được lưu trữ trong Trường CodeHash. Đối với các tài khoản EOA, tuy nhiên, có không phải là “mã”, vì vậy trường CodeHash chứa hàm băm của chuỗi rỗng.

• Storage Root : Nó là mã băm gốc 256-bit của cây Merkle mã hóa nội dung lưu trữ của tài khoản. Các MPT mã hóa hàm băm của nội dung lưu trữ. Duy trì băm gốc của cây này trong trường Storage Root sẽ giúp theo dõi nội dung của tài khoản và cũng giúp đảm bản tính toàn vẹn của nó.

• Nonce : Nó là một bộ đếm đảm bảo mỗi giao dịch được chỉ xử lý một lần. Đối với EOA, con số này đại diện cho số lượng giao dịch từ địa chỉ của tài khoản. Đối với Tài khoản Hợp đồng, nó đại diện cho số hợp đồng được tạo bởi tài khoản này. Vì vậy, bộ ba “nhà nước” có trách nhiệm theo dõi trạng thái những thay đổi của chuỗi khối Ethereum. 

Tuy nhiên, có một chút khó khăn là trạng thái không được lưu trữ trực tiếp trong mỗi khối, thay vì ở dạng Đệ quy Tiền tố độ dài (RLP) – dữ liệu trạng thái được mã hóa trong MPT tại mọi nút Ethereum. Vì vậy, để duy trì trạng thái toàn cầu, chuỗi khối Ethereum bao gồm “trạng thái rễ ”trong mỗi và mọi khối lưu trữ mã băm gốc của cây băm (Merkle root) đại diện cho trạng thái hệ thống tại thời điểm khối là tạo.

Theo Sách vàng Ethereum, “Trạng thái thế giới” là một bản đồ giữa các địa chỉ (số nhận dạng 160-bit) và trạng thái tài khoản. Vì vậy, thế giới State có thông tin của tất cả các tài khoản trong blockchain, nhưng không được lưu trữ trong mỗi khối. Mỗi khối chỉ sửa đổi các phần của trạng thái. Theo một cách nào đó, Trạng thái thế giới được tạo ra khi xử lý từng khối kể từ khối gốc. 

Các nút Ethereum nhất định có thể chọn duy trì tất cả các trạng thái lịch sử bằng cách lưu giữ tất cả các giao dịch lịch sử, nghĩa là, chuyển đổi trạng thái và kết quả đầu ra. Điều này cho phép khách hàng truy vấn trạng thái của blockchain bất kỳ lúc nào, ngay cả đối với những cái lịch sử, mà không cần phải tính toán lại mọi thứ từ sự bắt đầu. 

Xem thêm Cấu trúc Blockchain của bitcoin

Lấy thông tin trạng thái tương tự như một tổng hợp truy vấn trong SQL nơi có sẵn dữ liệu; chỉ cần tổng hợp. Vì vậy, dữ liệu trạng thái cũ có thể dễ dàng bị loại bỏ (điều này được gọi là “cắt tỉa”) vì chúng có thể được tính toán lại khi được yêu cầu. Chà, dữ liệu trạng thái theo thiết kế là dada ngầm , có nghĩa là thông tin trạng thái chỉ nên tính toán

Hợp đồng thông minh Ethereum

Không giống như Bitcoin, chỉ là một loại tiền điện tử, Ethereum còn hơn thế nữa– nhờ các hợp đồng thông minh. Chúng tôi có một cái nhìn thoáng qua về thế nào là hợp đồng thông minh có thể có trong các phần trước khi tìm hiểu về Tài khoản hợp đồng.

Mặc dù chúng tôi sẽ đi sâu vào các khía cạnh phát triển của hợp đồng thông minh trong các chương tiếp theo, chúng ta sẽ khám phá chi tiết những gì chúng thực sự có trong phần này. Chúng ta hãy bắt đầu với lý do tại sao nó được đặt tên như vậy? Xin lưu ý rằng không có gì “Thông minh” trong một hợp đồng thông minh có sẵn. Thật thông minh khi bạn viết mã logic thông minh vào nó, và đó là vẻ đẹp của Ethereum cho phép bạn làm như vậy. Hãy để chúng tôi chỉ tóm tắt quá trình học tập của chúng tôi cho đến nay về các hợp đồng thông minh Ethereum:

• Hợp đồng thông minh nằm bên trong chuỗi khối Ethereum.

• Họ có tài khoản riêng, do đó có địa chỉ và thăng bằng

• Họ có khả năng gửi tin nhắn và nhận các giao dịch.

• Họ được kích hoạt khi họ nhận được một giao dịch, và cũng có thể bị vô hiệu hóa.

• Giống như các giao dịch khác, phí thực hiện và lưu trữ phí cũng được áp dụng cho họ.

Tất cả mã trong Ethereum, bao gồm cả các hợp đồng thông minh, được biên dịch ở cấp độ thấp, ngôn ngữ bytecode dựa trên ngăn xếp, được gọi là mã EVM, chạy trên EVM. Các ngôn ngữ cấp cao phổ biến được sử dụng để viết thông minh các hợp đồng là Solidity, Serpent và LLL, nơi các trình biên dịch tương ứng của chúng chuyển đổi mã mức cao thành mã byte EVM. 

Chúng tôi đã xem xét cách hợp đồng có thể được thêm vào blockchain bởi bất kỳ tác nhân bên ngoài nào như như EOA. Vì việc tính toán và lưu trữ trong Ethereum Rất tốn kém Có thể khuyên rằng logic nên được viết đơn giản và tối ưu hóa thời trang nhất có thể. Khi một hợp đồng thông minh được triển khai cho Ethereum mạng blockchain, bất kỳ ai cũng có thể gọi các chức năng của hợp đồng thông minh. 

Xem thêm Mật mã đường cong Ecliptic

Các chức năng thường có các tính năng bảo mật được mã hóa ngăn chặn truy cập trái phép; tuy nhiên, vẫn có thể thực hiện được họ sẽ không thành công. Nếu bạn cố gắng tưởng tượng một hợp đồng thông minh bên trong một khối trong Ethereum blockchain, nó có thể xuất hiện như trong Hình  4-9

Tìm hiểu về Ethereum

Hình 4-9. Hợp đồng thông minh Ethereum liên quan đến các khối

Bây giờ chúng ta hãy lấy một ví dụ về một ứng dụng bỏ phiếu. Một hợp đồng thông minh được viết có địa chỉ (địa chỉ Tài khoản Hợp đồng) và là một phần của một số khối trong chuỗi khối, tùy thuộc vào thời điểm nó được tạo. 

Các cử tri có thể thực hiện các giao dịch đến địa chỉ đó (phiếu bầu). Mã hợp đồng là được viết sao cho nó sẽ tăng số phiếu bầu với mọi giao dịch đã nhận và tự kết thúc sau một thời gian, công bố kết quả bỏ phiếu (Thay đổi trạng thái Ethereum). Hãy xem Hình 4-10 để có một sơ đồ đại diện cho sự hiểu biết cấp cao

Tìm hiểu về Ethereum

Hình 4-10. Một ứng dụng với logic hợp đồng thông minh

Mã và máy ảo ethereum

Ethereum là một blockchain có thể lập trình cho phép người dùng tạo các hoạt động riêng của bất kỳ độ phức tạp tùy ý nào thông qua Turing-complete ngôn ngữ. EVM là công cụ thực thi của Ethereum có vai trò như môi trường thời gian chạy cho các hợp đồng thông minh. Đó là sự đổi mới chính của Ethereum khiến nó trở nên độc đáo so với các blockchain khác các hệ thống.

Đó là EVM trên cơ sở đó công nghệ hợp đồng thông minh được cho là sẽ đạt được cấp độ đổi mới tiếp theo và trò chơi đang được phát triển. EVM cũng đóng một vai trò quan trọng trong việc thực hiện giao dịch, thay đổi trạng thái của Ethereum và đạt được sự đồng thuận. Các mục tiêu thiết kế của EVM là sau:

Tính đơn giản: Ý tưởng là làm cho EVM đơn giản như có thể với các cấu trúc cấp thấp. Đây là lý do tại sao số opcodes cấp thấp được giữ ở mức tối thiểu, và các loại dữ liệu cũng vậy, đến mức phức tạp lôgic vẫn có thể được viết một cách thuận tiện bằng cách sử dụng cấu trúc. Tổng số 160 hướng dẫn, trong đó 65 hướng dẫn khác biệt về mặt logic

Thuyết xác định tuyệt đối: Đảm bảo rằng việc thực hiệnhướng dẫn với cùng một bộ đầu vào phải tạo ra cùng một tập hợp đầu ra (xác định!) giúp duy trì tính toàn vẹn của EVM mà không có bất kỳ sự mơ hồ. Thuyết quyết định cùng với khái niệm “Bước tính toán” giúp ước tính chi phí khí đốt với gần đúng.

Tối ưu hóa không gian: Trong các hệ thống phi tập trung, không gian tiết kiệm là mối quan tâm lớn nhất. Đây là lý do tại sao EVM lắp ráp được giữ nhỏ gọn nhất có thể.

Được điều chỉnh cho các hoạt động gốc: EVM được điều chỉnh cho một số hoạt động gốc chẳng hạn như các loại cụ thể của các phép toán số học được sử dụng cho mật mã (mô-đun arithmetic), đọc khối hoặc dữ liệu giao dịch, tương tác với “trạng thái”, v.v. Một ví dụ khác như vậy là:Độ dài từ 256-bit (32 byte) để lưu trữ mật mã băm, trong đó EVM hoạt động trên cùng 256-bit số nguyên.

Bảo mật dễ dàng: Theo một cách nào đó, Giá gas giúp đảm bảo rằng EVM là không thể khai thác. Nếu không có chi phí, những kẻ tấn công chỉ có thể tiếp tục tấn công hệ thống trong mọi khả năng có thể đường.

Trong khi hầu hết mọi hoạt động trên EVM đều yêu cầu một số chi phí xăng , nó sẽ dễ dàng để đưa ra tốt mô hình chi phí khí đốt trên EVM Chúng tôi biết rằng mọi nút tham gia trong mạng Ethereum chạy EVM cục bộ, thực hiện tất cả các giao dịch và hợp đồng thông minh, đồng thời tiết kiệm trạng thái cuối cùng tại địa phương. 

Đó là EVM viết mã (hợp đồng thông minh) và dữ liệu vào chuỗi khối và thực thi các hướng dẫn (mã opcodes) của mã giao dịch và mã hợp đồng thông minh được viết bằng ngôn ngữ hoàn chỉnh Turing. Đó là có thể nói, EVM đóng vai trò như một môi trường thời gian chạy (RTE) cho Ethereum thông minh hợp đồng và đảm bảo thực thi an toàn mã. 

Rõ ràng, khi mã hoặc giao dịch được xác thực thông qua kỹ thuật số tương ứng của chúng chữ ký, chúng được thực thi trên EVM. Vì vậy, chỉ sau khi thực hiện thành công hướng dẫn thông qua EVM, trạng thái Ethereum có thể thay đổi.Trừ khi một người kết nối EVM với phần còn lại của mạng để tham gia vào mạng P2P, nó có thể được cách ly khỏi mạng chính. 

Trong môi trường cô lập và hộp cát, EVM có thể được sử dụng để kiểm tra hợp đồng thông minh. Nó tạo điều kiện thuận lợi trong việc xây dựng tốt hơn, mạnh mẽ và sản xuất hợp đồng thông minh sẵn sàng. 

Xem thêm Mã hóa mật mã: các khái niệm cơ bản

Để hiểu rõ hơn về cách hợp đồng thông minh hoạt động tận dụng EVM, chúng ta nên hiểu cách dữ liệu được tổ chức, lưu trữ, và được thao tác bằng bất kỳ ngôn ngữ EVM nào như Solidity, Serpent và những cái có thể xuất hiện trong tương lai. Bạn có thể muốn xem xét EVM nhiều hơn giống như một công cụ cơ sở dữ liệu. Mặc dù chúng tôi sẽ không đi sâu hơn vào Sự vững chắc các nguyên tắc cơ bản về lập trình, chúng ta sẽ xem cách nó tương tác với EVM trong  phần này. Hãy xem Hình 4-11

Tìm hiểu về Ethereum

Hình 4-11. Triển khai và sử dụng hợp đồng thông minh Bây giờ chúng ta hãy hiểu quản lý bộ nhớ với EVM. Hãy xem ba chiến lược sau mà EVM tuân theo:

  • Lưu trữ (liên tục)
  • Ánh xạ lưu trữ khóa-giá trị (tức là, 256-bit đến 256-bit ánh xạ từ). Điều này có nghĩa là cả khóa và giá trị là 256 bit (tức là 32 byte).
  • Từ trong một hợp đồng, không thể lưu trữ enumarate.
  • Tại bất kỳ thời điểm nào, trạng thái của hợp đồng có thể được xác định bởi các biến mức hợp đồng được gọi là “biến trạng thái” luôn ở trong “bộ nhớ”, và nó không thể được cập nhật trong thời gian chạy. Điều này có nghĩa là rằng cấu trúc của bộ nhớ chỉ được đặt một lần trong quá trình tạo hợp đồng và không thể thay đổi. Tuy nhiên, nội dung của chúng có thể được thay đổi với Lệnh gọi “sendTransaction”.
  • Đọc / cập nhật dung lượng lưu trữ là một việc tốn kém.
  • Hợp đồng không thể đọc, viết hoặc cập nhật lên bất kỳ hợp đồng nào khác bộ nhớ không thuộc sở hữu của họ.
  • SSTORE / SLOAD thường được sử dụng hướng dẫn. Ví dụ: hướng dẫn SSTORE bật lên hai mục hàng đầu ra khỏi ngăn xếp, xem xét mục đầu tiên mục làm chỉ mục và chèn mục thứ hai vào bộ nhớ của hợp đồng tại vị trí chỉ mục đó.
  • Bộ nhớ (dễ bay hơi)
  • Nó tương tự như yêu cầu RAM nói chung hệ thống máy tính cho bất kỳ mã hoặc ứng dụng nào thực thi và được sử dụng để lưu trữ các giá trị tạm thời.
  • Hợp đồng có thể sử dụng bất kỳ dung lượng bộ nhớ nào trong thời gian thực hiện bằng cách trả tiền cho nó và không gian bộ nhớ đó được dọn dẹp sau khi quá trình thực thi hoàn tất. Các kết quả đầu ra trong quá trình thực thi có thể được đẩy đến lưu trữ liên tục có thể được sử dụng lại trong tương lai các cuộc hành quyết.
  • Bộ nhớ thực sự là một mảng byte liền kề, không giống như lưu trữ. Nó được phân bổ trong 256-bit (32 byte) miếng, mảnh nhỏ.
  • Bắt đầu không có khoảng trống và chiếm không gian trong các đơn vị trong số các phần 32 byte.
  • Không có từ khóa “bộ nhớ”, hợp đồng thông minh các ngôn ngữ như Solidity dự kiến ​​sẽ khai báo các biến trong bộ nhớ để tồn tại
  • Không thể sử dụng bộ nhớ ở cấp hợp đồng thông minh; nó chỉ có thể được sử dụng trong các phương thức.
  • Các đối số của hàm hầu như luôn có trong bộ nhớ.
  • MSTORE / MLOAD thường được sử dụng hướng dẫn.
  • Register
  • EVM dựa trên ngăn xếp, do đó theo sau LIFO (Cuối cùng-in, First- Out), nơi ngăn xếp được sử dụng để thực hiện tính toán.
  • Các mục ngăn xếp cũng là các từ 256 bit được sử dụng để bắt chước các thanh ghi giả 256-bit. Họ đã quen với giữ các biến cục bộ của loại “giá trị” và để chuyển các tham số cho hướng dẫn hoặc chức năng, bộ nhớ các phép toán và các phép toán thuật toán khác.
  • Cho phép tối đa 1024 phần tử và gần như là dùng miễn phí.
  • Hầu hết các hoạt động ngăn xếp được giới hạn ở đầu các ngăn xếp. Cách thực hiện khá giống với cách Tập lệnh bitcoin đã được thực thi.

Khi EVM đang chạy và mã byte được chèn vào một giao dịch để thực thi, trạng thái tính toán đầy đủ của nó có thể được xác định bằng cách sau tuple: [block_state, transaction, message, code, memory, stack, pc, gas ]. 

Bạn phải có thể tìm ra tất cả các trường này ngay bây giờ. Họ có ba các loại bộ nhớ mà chúng ta đã thảo luận (trường block_state đại diện cho toàn cục trạng thái và là để lưu trữ). Trường PC giống như một con trỏ cho một chỉ dẫn trong ngăn xếp được thực thi.

Trong Ethereum, Giao diện nhị phân ứng dụng (ABI) là một sự trừu tượng hóa đó không phải là một phần của giao thức Ethereum cốt lõi, nhưng được sử dụng để truy cập mã byte trong hợp đồng thông minh như thông lệ tiêu chuẩn. Mặc dù nó có thể cho bất kỳ ai để xác định ABI của riêng họ cho các hợp đồng của họ và tuân thủ nó để có được đầu ra mong muốn, việc sử dụng Solidity sẽ dễ dàng hơn. Mục đích của ABI là sau:

  • Làm thế nào và những chức năng nào bên trong hợp đồng thông minh nên
  • được gọi là
  • Định dạng nhị phân trong đó thông tin phải là được chuyển cho các chức năng hợp đồng thông minh làm đầu vào
  • Định dạng nhị phân mà bạn mong đợi kết quả đầu ra thực thi hàm sau khi gọi hàm đó Với thông số kỹ thuật ABI, thật dễ dàng (mặc dù có thể không cần thiết) hai chương trình được viết bằng hai ngôn ngữ khác nhau để tương tác với nhau

Xem thêm Khoa học mật mã(cryptographic science)

Ethereum Ecosystem

Chúng tôi đã tìm hiểu các thành phần cốt lõi để hiểu Ethereum thực sự như thế nào làm. Có một số hạn chế cố hữu đối với Ethereum chẳng hạn như tiếp theo:

• EVM chậm; nó không phải là lời khuyên để được sử dụng cho lớn tính toán.

• Tính toán và lưu trữ trên blockchain là đắt tiền; có thể sử dụng tính toán off chain và sử dụng IPFS / Swarm để lưu trữ.

• Khả năng mở rộng là một vấn đề; có những kỹ thuật khác nhau để giải quyết nó, nhưng họ chủ quan đối với trường hợp kinh doanh bạn đang đối phó với.

• Các blockchain riêng tư có nhiều khả năng phát triển. Bây giờ chúng ta hãy xem xét ngăn xếp công nghệ Ethereum để hiểu cấp cao của hệ sinh thái Ethereum

Leave a Reply