Gửi bài viết tới BigCoin

CREDITS : Review Đánh Gia Code API của Credits

Đăng bởi: StevenPalley  - 05/05/2018 - 852 lượt xem
Chia sẻ
 

Phân tích kỹ thuật và đánh giá

Khái quát chung:

Tôi đã tiến hành đánh giá các code kể từ vài ngày qua để cung cấp cho nhóm các đề xuất và khuyến nghị của tôi sau khi kiểm toán nội bộ (biên dịch, cấu trúc và review code).

Công việc mà tôi đã làm được từ vài ngày qua hoàn toàn rất cần thiết để cung cấp phản hồi tốt hơn cho cộng đồng và cho nhóm phát triển cốt lõi. Tôi không được trả tiền để thực hiện đánh giá này và đó là nhiệm vụ của tôi với tư cách là cố vấn kỹ thuật của dự án để cung cấp cho bạn một cách công khai những suy nghĩ của tôi.

Trước hết, phân tích sau đây sẽ cho bạn thấy mô hình hóa của code để hiểu rõ hơn cấu trúc của API.

Mô-đun API của nền tảng CREDITS đã sẵn sàng cho tài khoản github CREDITS và bao gồm các tệp sau:

APIHandler.cpp

APIHandler.h

APIHandlerBase.cpp

APIHandlerBase.h

APIHandlerInterface.h

CallStats.cpp

CallStats.h

csconnector.cpp

DBHandlers.cpp

DBHandlers.h

DebugLog.h

Validation.h

ValidationTests.cpp

Trạng thái của code thực tế cho thấy không có sự hiện diện của giấy phép trong các header file. Tôi biết rằng đây không phải là phiên bản cuối cùng nhưng tôi khuyên bạn nên thêm nó càng sớm càng tốt.

 

Tôi nhận thấy ngôn ngữ trong code của bạn là bằng tiếng Nga, nhưng tôi đề nghị bạn nên dịch nó sang tiếng Anh, ngôn ngữ Shakespeare. Tuy nhiên tôi rất thích đọc nó bằng ngôn ngữ Moliere.

Với vai trò như một máy chủ API, code chủ yếu được chạy và biên dịch trên nền tảng Linux. Dựa trên thực tế này, tôi đã không tìm thấy bất kỳ Makefile nào để giúp tôi làm điều đó đúng cách. Tôi khuyên bạn nên tạo một Makefile được sử dụng để xây dựng các chương trình nhị phân từ mã nguồn và làm cho quy trình làm việc của bạn có thể tái sản xuất được.

Đối với phần xác thực, cấu trúc của code được triển khai dưới dạng macro. Mặc dù việc triển khai này mang lại khả năng thích ứng tuyệt vời, nhưng nó hy sinh rất nhiều khả năng hiểu và sẵn sàng. Sử dụng thư viện kiểm tra chuẩn có thể là một khởi đầu tốt nếu bạn định thay đổi nó.

Bạn cũng có thể tách Unit Test từ các tệp “prod”. Nó cho phép các cộng tác viên thêm các bài kiểm tra của riêng họ trong giai đoạn thử nghiệm mà bạn dự định chạy trong những ngày tới.

Tìm hiểu sâu hơn về từng file

Tôi đã phân tích từng file được trình bày một cách riêng biệt và mô hình hóa nó để cung cấp càng nhiều chi tiết càng tốt về kiến trúc được chọn bởi coreteam CREDITS.

APIHandler.cpp

#include “APIHandler.h”

#include “DebugLog.h”

#include “csconnector/csconnector.h”

#include “CallStats.h”

#include “Validation.h”

Biểu đồ của các header file trông như sau:

Namespace:

csconnector

csconnector::detail

Các chức năng:

VALIDATE (nguồn)

VALIDATE (mục tiêu)

VALIDATE (tiền tệ)

APIHandler.h

#include

#include “APIHandlerInterface.h”

Biểu đồ của các header file trông như sau:

 

 

Biểu đồ của các file này được bao gồm:

Các lớp code:

Lớp csconnector::APIHandler

Namespace:

csconnector

Nhận xét:

Header file mô tả các phương thức và tham số của chúng. Không có nhận xét nào khác có liên quan mà tôi nhận thấy

APIHandlerBase.cpp

#include “APIHandlerBase.h”

Biểu đồ của các header file được bao gồm trông như sau:

Các lớp:

struct csconnector::detail::APIRequestStatus

Namespace:

csconnector

csconnector::detail

Các biến (Variables):

APIRequestStatus csconnector::detail::statuses

[static_cast< size_t >(APIHandlerBase::APIRequestStatusType::MAX)]

Nhận xét:

Áp dụng chính xác các kiểu dữ liệu để giảm dung lượng bộ nhớ đã sử dụng khi gán trạng thái của một function call.

APIHandlerBase.h

#include “API.h”

Biểu đồ của các header file được bao gồm cho APIHandlerBase.h:

Biểu đồ các tệp, tệp này được bao gồm trong:

Các lớp:

struct csconnector::APIHandlerBase

Namespace:

csconnector

Nhận xét:

File header mô tả các phương thức và tham số của chúng. Không có nhận xét liên quan.

APIHandlerInterface.h

#include “API.h”
 #include “APIHandlerBase.h”

Biểu đồ của các header file được bao gồm cho APIHandlerBase.h:

 

Biểu đồ các tệp, tệp này được bao gồm trong:

Các lớp:

struct csconnector::APIHandlerInterface

Namespace:

сsconnector

Nhận xét:

File header mô tả các phương thức và tham số của chúng. Không có nhận xét liên quan.

CallStats.cpp

#include “CallStats.h”
 #include
 #include
 #include
 #include “DebugLog.h”

Biểu đồ của các header file được bao gồm cho CallStats.cpp:

Typedefs:

using csconnector::call_stats::Counter = std::atomic

using csconnector::call_stats::NumCallsPerCommand

 = std::array<Counter, NumCommands>

using csconnector::call_stats::NumCallsPerCommandStats

 = std::array<int, NumCommands>

Các chức năng:

NumCallsPerCommandStats csconnector::call_stats::get ()

void csconnector::call_stats::count (Commands command)

void csconnector::call_stats::clear ()

void csconnector::call_stats::start ()

void csconnector::call_stats::stop ()

Các biến:

constexpr size_t csconnector::call_stats::NumCommands

 = (size_t)Commands::Max

NumCallsPerCommand csconnector::call_stats

::numCallsPerCommand

std::chrono::steady_clock::time_point csconnector

::call_stats::lastUpdateTime = std::chrono::steady_clock::now()

std::thread csconnector::call_stats::thread

std::atomic_bool csconnector::call_stats::quit {false}

Nhận xét:

CallStats.h

#include <csconnector/csconnector.h>

Biểu đồ của các header files được bao gồm cho CallStats.cpp:

Biểu đồ các tệp, tệp này được bao gồm trong:

Namespace:

csconnector

csconnector::call_stats

Các chức năng:

void csconnector::call_stats::start ()

void csconnector::call_stats::stop ()

void csconnector::call_stats::count (Commands command)

Nhận xét:

File header mô tả các phương thức và tham số của chúng. Không có nhận xét liên quan.

csconnector.cpp

#include“csconnector/csconnector.h”

#include“DebugLog.h”

#include“APIHandler.h”

#include“DBHandlers.h”

#include“CallStats.h”

#include

#include

#include<thrift/protocol/TBinaryProtocol.h>

#include<thrift/transport/TServerSocket.h>

#include<thrift/transport/TBufferTransports.h>

#include<thrift/server/TThreadedServer.h>

Biểu đồ của các header file được bao gồm cho csconnector.cpp: 

Namespace:

csconnector

csconnector::detail

Typedefs:

typedef std::lock_guard< std::mutex > csconnector::detail::ScopedLock

Các chức năng:

void csconnector::detail::start (const Config &config)

void csconnector::detail::stop ()

void csconnector::start (const Config &config)

void csconnector::stop ()

Các biến:

td::unique_ptr< TThreadedServer > csconnector::detail::server = nullptr

std::mutex csconnector::detail::mutex

std::thread csconnector::detail::thread

Nhận xét:

DBHandlers.cpp

#include “DBHandlers.h”

#include <csdb/csdb.h>

#include “csconnector/csconnector.h”

#include

#include

Biểu đồ của các header file được bao gồm cho DBHandlers.cpp:

Namespace:

db_handlers

Typedefs:

Sử dụng db_handlers::PoolNumber = uint64_t

Các chức năng:

void db_handlers::init ()

void db_handlers::deinit ()

void db_handlers::BalanceGet (BalanceGetResult &_return, const Address &address, const Currency &currency)

void db_handlers::string_to_uuid (const std::string &uuid_str, uuid_t uuid)

bool db_handlers::GetTransaction (const TransactionId &transactionId, Transaction &transaction)

void db_handlers::TransactionGet (TransactionGetResult &_return, const TransactionId &transactionId)

void db_handlers::SubstituteTransactionHash (api::Transaction &transaction, const std::string &newHash)

Đó thực sự là một hack (ngôn ngữ lập trình).

std::string db_handlers::FormatTransactionHash (const std::string &poolHash, size_t transacionNumber)

void db_handlers::TransactionsGet (TransactionsGetResult &_return, const Address &address, const int64_t offset, const int64_t limit)

void db_handlers::PoolListGet (PoolListGetResult &_return, const int64_t offset, const int64_t limit)

void db_handlers::PoolGet (PoolGetResult &_return, const PoolHash &hash)

Nhận xét:

DBHandlers.h

#include “API.h”

Biểu đồ của các header file được bao gồm cho DBHandlers.h:

Biểu đồ các tệp, tệp này được bao gồm trong:

Namespace:

db_handlers

Các chức năng:

void db_handlers::init ()

void db_handlers::deinit ()

void db_handlers::BalanceGet (api::BalanceGetResult &_return, const api::Address &address, const api::Currency &currency)

void db_handlers::TransactionGet (api::TransactionGetResult &_return, const api::TransactionId &transactionId)

void db_handlers::TransactionsGet (api::TransactionsGetResult &_return, const api::Address &address, const int64_t offset, const int64_t limit)

void db_handlers::PoolListGet (api::PoolListGetResult &_return, const int64_t offset, const int64_t limit)

void db_handlers::PoolGet (api::PoolGetResult &_return, const api::PoolHash &hash)

Nhận xét:

File header mô tả các phương thức và tham số của chúng. Không có nhận xét liên quan.

DebugLog.h

#include

Biểu đồ của các header file được bao gồm cho for DebugLog.h:

Biểu đồ các tệp, tệp này được bao gồm trong:

Macros:

#define DEBUG_LOG

Các chức năng:

void Log ()

template

void Log (T t, Args… args)

template

void DebugLog (T t, Args… args)

Macros:

DEBUG_LOG

#define DEBUG_LOG

Các chức năng:

DebugLog()

template

void DebugLog ( T t,Args… args)

Call graph:

Biểu đồ của function call:

Log() [1/2]

void Log

Biểu đồ của function call:

Log() [2/2]

template

void Log(T t,

Args… args

)

Call graph:

Nhận xét:

Không có nhận xét liên quan ở giai đoạn phát triển này.

Validation.h

#include

#include

#include

#include

#include

Biểu đồ của các header file được bao gồm cho Validation.h:

Biểu đồ các tệp, tệp này được bao gồm trong:

Các lớp:

struct validation::Validator< T >

struct validation::StringLengthValidator< O >

struct validation::StringLengthValidator< O >::Int2Type< I >

struct validation::NonEmptyValidator

struct validation::NonZeroValidator

struct validation::EqualToValidator< T >

struct validation::CustomValidator< T >

struct validation::ValidatorBuilder< T >

struct validation::Dummy

struct validation::ValidationTraits< T, D >

Namespace:

Validation code

Macros:

#define VALIDATE_BEGIN_(C, D)

#define VALIDATE_BEGIN(C) VALIDATE_BEGIN_(C, Dummy)

#define VALIDATE_BEGIN_EX(C, D) struct D{}; VALIDATE_BEGIN_(C, D)

#define VALIDATE(F)

#define VALIDATE_END()

Typedef:

Sử dụng xác thực::FieldId = uint8_t

Sử dụng xác thực::ValidatorId = uint8_t

Sử dụng xác thực::ValidationResult = std::tuple< FieldId, ValidatorId >

Kiểu dữ liệu Enum:

enum validation::StringLengthOperation { validation::Less, validation::More, validation::Equal }

Các biến:

constexpr ValidationResult validation::NoError = { 0, 0 }

Macros:

Xác thực

#define VALIDATE ( F )

Macro definition:

 

 

Nhận xét:

file header mô tả các phương thức và tham số của chúng. Không có nhận xét liên quan ở giai đoạn phát triển này.

ValidationTests.cpp

#include “Validation.h”

#include

Biểu đồ của các header file được bao gồm cho ValidationTests.cpp:

Các lớp:

struct Test

Các chức năng:

VALIDATE (x).EqualTo(1)

VALIDATE (s).Length< More >(2)

void validationTest ()

Functions:

VALIDATE() [1/2]

VALIDATE ( x )

VALIDATE() [2/2]

VALIDATE ( s )

validationTest()

void validationTest ()

Biểu đồ cuả function call:

Nhận xét:

Kết luận

Mặc dù nhận thấy một số cải tiến cho code vẫn cần thiết nhưng cấu trúc của code dường như được thiết kế để có khả năng mở rộng. Là cố vấn kỹ thuật của Credit, tôi cảm thấy tự tin về dự án và những gì nhóm nghiên cứu đang cố gắng đạt được.

Thật vậy, xây dựng một giao thức mới từ đầu sau một cộng đồng mạnh mẽ cần có thời gian. Nhóm cốt lõi sẽ xuất bản từng phần code trên GitHub để các thành viên cộng đồng có thể nhận được phản hồi. Nhóm CREDITS đã bắt đầu chia sẻ một phần của code và họ sẽ tiếp tục làm điều đó trong những ngày tới.

Cộng đồng sẽ được tham gia nhiều hơn khi một phiên bản ổn định đã sẵn sàng để được triển khai. Ý kiến cá nhân, tôi hiếm khi thấy trong không gian cộng đồng blockchain có một nhóm gần gũi với cộng đồng của họ như Credit.

Kiên nhẫn dẫn đến sự cứu rỗi, vội vàng dẫn đến sự đau khổ. Ai muốn làm những điều vĩ đại thì phải suy nghĩ sâu sắc về các chi tiết bởi vì những tai họa đang đứng ở đằng sau. Hãy kiên nhẫn chờ đợi cuộc cách mạng sắp bùng nổ.

Nguồn: medium.com

Bạn đang đọc bài: CREDITS : Review Code API

Biên soạn: https://bigcoinvietnam.com/

Tags
Chia sẻ  
  
  
  
100% Rating
Điểm: 5 / 5
2 Bình chọn

StevenPalley

Đội ngũ dịch bài từ các trang web uy tín ở nước ngoài. Với sự đánh giá cao của các chuyên gia

Vitalik Buterin: Những dự án hứa hẹn TPS cao là một đống RÁC tập trung


Trong bài phát biểu quan trọng được đưa ra tại một Hội Nghị vào nửa đầu tháng 1 năm 2019, đồng sáng lập Ethereum và là một người có ảnh hưởng trong lĩnh vực blockchain- Vitalik Buterin đã đưa ra một tuyên bố gây tranh cãi và khiến nhiều người phải “cau mày”.

Khi một thành viên khán giả hỏi anh ta về khả năng xử lý số giao dịch trên mỗi giây của công nghệ Casper CBC sắp tới, Buterin đã nhanh chóng ngắt lời thành viên khán giả này trước khi đưa ra tuyên bố không khỏi bất ngờ cho khán giả về việc có bao nhiêu người hiện đang hiểu lầm và ưu tiên không chính đáng “tỷ lệ TPS cao” (số giao dịch/giây).

Trong tuyên bố này, anh nói rằng các dự án sử dụng các thuật toán thay thế để đạt được tỷ lệ TPS cao “một cách vô lý” đều được coi là một “đống rác tập trung”.

RẺ, Nhanh, Bảo Mật- Chỉ chọn 2 tính chất

Trước khi chúng ta đi sâu vào phân tích kỹ thuật của CBC Casper sắp tới, chúng ta cần thảo luận về những gì Buterin đang muốn nhấn mạnh ở đây. Ngoài ra, tại sao Buterin lại cảm thấy rằng các dự án mà quá tập trung vào TPS (giao dịch mỗi giây) đang cố gắng tận dụng những từ ngữ gây hiểu lầm thay vì thực sự hướng đến việc phát triển một công nghệ ổn định và phi tập trung?

Để hiểu rõ hơn, TPS đề cập đến số lượng giao dịch mà một mạng lưới tiền mã hóa có thể xử lý được trên mỗi giây. Bitcoin có thể xử lý một lượng TPS tương đối thấp. Điều này càng bị ảnh hưởng hơn bởi nhu cầu mua bán Bitcoin cực kỳ cao trên mạng đôi khi dẫn đến việc phí giao dịch tăng cao.

Ngoài ra, các mạng lưới gần đây có tỷ lệ TPS cao hơn, nhưng có lẽ tính bảo mật lại không cao bằng mạng lưới Bitcoin (điều mà mạng blockchain của Bitcoin luôn tự hào). Ví dụ, mặc dù bitcoin có TPS tương đối thấp, cho đến ngày nay, nó chưa bao giờ bị tấn công 51%, tấn công chênh thời gian hoặc bất kỳ đợt tấn công lớn nào khác.

So sánh điều này với các dự án mới hơn và có TPS cao hơn như Verge -đã bị tấn công thành công nhiều lần trước đó. Các bạn đừng hiểu nhầm rằng việc có nhiều TPS hơn sẽ tự động làm cho dự án kém an toàn hơn. Thay vào đó, điều này nhắc nhở rằng chỉ cần có TPS cao là không đủ để xây dựng một mạng lưới mã hóa đáng tin cậy, an toàn và đáng tin cậy.

Giải quyết vấn đề TPS là một điểm nhức nhối đối với những người đam mê công nghệ mã hóa. Các cuộc tranh luận xung quanh điều này có thể trở nên khó chịu đến nỗi nhiều cuộc nội chiến “ảo” đã diễn ra. Ví dụ kinh điển là Bitcoin Cash tách ra khỏi bitcoin, chủ yếu do mong muốn có TPS cao hơn và phí giao dịch thấp hơn. Trước đó, một sự cố tương tự đã xảy ra với Litecoin (mặc dù nó không gây tranh cãi vì Litecoin mang một tên và danh tính hoàn toàn khác, trái ngược với tuyên bố hướng đến việc trở thành “bitcoin thật”).

“Một đống RÁC tập trung”?

Theo Buterin, có nhiều cách để đạt được TPS cao và không phải tất cả các phương thức này đều giống nhau.  Buterin đặc biệt nêu ra các thuật toán như VFT, và tuyên bố rằng cách duy nhất các dự án này có thể đạt được số TPS đáng tự hào của họ là tập trung hóa.

Đội nhóm của Buterin đang phát triển theo hướng ngược lại. Thay vì cố gắng hết sức để đạt tỷ lệ TPS cao nhất có thể, mục tiêu của họ là tập trung vào hai điều. Đầu tiên, làm việc kiểm duyệt hoặc đảo ngược khối khó hơnlượng thời gian thực hiện các giao dịch an toàn. Theo Buterin, hai mối quan tâm này mới là vấn đề, không phải là tỷ lệ TPS cao ngất trời.

 

Buterin chia sẻ cụ thể:

 “Khi một dự án blockchain tuyên bố: Chúng tôi có thể thực hiện 3500 TPS vì chúng tôi có thể phát triển một thuật toán khác, điều tôi thực sự muốn nói là họ chỉ giống một đống rác tập trung chỉ hoạt động vì mạng lưới có những BẢY NODE đang vận hành.”

Nói cách khác, Buterin tuyên bố rằng các dự án này chỉ có thể đạt được TPS của họ vì họ dựa vào những gì thực chất là điểm trung tâm của sự thất bại. Phương pháp thiết kế mạng này là phản đề cho cách các mạng tiền mã hóa được cho là hoạt động

Bạn có thể nghĩ theo cách này. Mỗi khối bitcoin chỉ có thể chứa 1 MB dữ liệu. Theo tiêu chuẩn của ngày hôm nay, khối lượng dữ liệu đó là rất nhỏ. Nếu chúng ta lưu trữ tất cả sức mạnh xử lý của mạng bitcoin trên mạng, dịch vụ đám mây AWS của Amazon, nó có thể dễ dàng xử lý hàng tỷ hoặc thậm chí hàng nghìn tỷ giao dịch mỗi giây.

Vậy tại sao chúng ta không làm vậy? Đáp án đơn giản. Bitcoin được thiết kế là một mạng lưới phi tập trung/ phân cấp, điều đó có nghĩa là nó miễn nhiễm với sự kiểm duyệt và nỗ lực của các thể lực bên ngoài (ví dụ như chính phủ, cảnh sát, v.v.). Nếu tất cả các giao dịch mạng bitcoin nếu được vận hành trên một dịch vụ đám mây sẽ thuộc sở hữu của một công ty và có thể bị gỡ xuống trong vài giây theo yêu cầu của một thực thể chính phủ mà công ty điều hành mạng sẽ buộc phải tuân thủ.

Về cơ bản những gì chúng ta đang có chính là một sự đánh đổi. Mạng bitcoin hy sinh tốc độ cực cao và khả năng thông lượng lớn- các đặc điểm của một hệ thống tập trung phát triển cao để đổi lấy hệ thống chậm hơn nhiều, tuy nhiên miễn nhiễm với kiểm duyệt và gỡ xuống.

Ý chính trong tuyên bố của Buterin là những dự án không tên mà ông đang đề cập đến về cơ bản là đi theo con đường này. Họ đang chọn tập trung hóa và tốc độ cao thay vì tính phân cấp và bảo mật.

Để hỗ trợ điều này, anh nói: “Mục đích của các thuật toán đồng thuận không phải là tạo ra một blockchain có tốc độ xử lý nhanh mà là tạo ra một blockchain an toàn.”

Tổng quan về Casper CBC

Làm thế nào một dự án có thể đạt được TPS cao trong khi vẫn giữ được tính chất phi tập trungbảo mật?

Buterin tuyên bố rằng thay vì dựa vào công nghệ dành riêng để tối đa hóa TPS, tỷ lệ TPS cao hơn có thể đạt được bằng cách sử dụng các công nghệ như sharding và các công nghệ lớp 2 khác (ví dụ khác là Lightning Network hoặc Plasma).

Một công nghệ như vậy mà Ethereum Foundation đang phát triển được gọi là Casper CBC. CBC là viết tắt của độ-chính-xác-được-xây-dựng (correction-by-construction). Nó liên quan đến một bộ các giao thức mới sẽ tác động đến cách đạt được sự đồng

Thành viên R & D của Ethereum Aditya Asgaonkar mô tả CBC như thế này: được gọi là độ-chính-xác-được-xây-dựng (hay CBC) bởi vì tính chính xác của các giao thức mới được đảm bảo ngay khi xây, bằng cách tăng dần xác định một giao thức trừu tượng (và có thể chính xác) hơn nữa.

Việc triển khai Casper đã được dự đoán từ khá lâu và hứa hẹn sẽ giúp mạng lưới thay đổi từ cơ chế đồng thuận bằng chứng công việc (PoW) được cho là lãng phí - nghĩa là khai thác trên các thiết bị ASIC tiêu thụ lượng lớn năng lượng và tài nguyên- sang cơ chế đồng thuận mới- cơ chế bằng chứng cổ phần (PoS).

Cơ chế này đòi hỏi nhiều kỹ thuật tiên tiến hơn để đạt được tỷ lệ TPS cao, nhưng hoàn toàn có thể, miễn là các nhà phát triển tìm ra cách để làm điều đó mà không làm mất tính bảo mật của mạng.

Nói tóm lại thì…

Bàn về các dự án, công nghệ và con người khác gần như là một đặc trưng nơi Buterin. Trong quá khứ khi anh đã đưa ra những lời tuyên bố như thế này, và câu trả lời thường được chia làm 2 phần: những người đồng ý với ý kiến của anh và những người thấy nơi anh “sự khoa trương thiển cận hoặc không đầy đủ”. Trong trường hợp này, Buterin đã không đề cập đến bất kỳ dự án cụ thể nào, và vì vậy chúng ta thấy đây là những phỏng đoán có giáo dục về những mạng lưới “nào đó” mà anh ấy đang đề cập.

Tuy nhiên, trong ngắn hạn, các bình luận của Buterin vẫn chưa có nhiều sự ủng hộ. Một số thông tin đã được công khai liên quan đến sự phát triển của Casper và CBC, nhưng công chúng vẫn chưa được cấp quyền truy cập đầy đủ vào Casper. Do đó, chúng ta chưa biết là liệu lời hứa của Buterin có trở thành sự thật hay không.

Có lẽ chúng ta sẽ biết thêm chi tiết về Casper và có thể xác định trực tiếp bao nhiêu sự thật được chứa trong tuyên bố đầy cảm xúc của Buterin trước thềm năm mới ở những cập nhật lần sau. Nhưng dù sao đây cũng là một quan điểm đánh chú ý và đánh giá!

Bạn đang đọc: Vitalik Buterin: Những dự án hứa hẹn TPS cao là một đống RÁC tập trung

Theo Blockonomi

Tags
Chia sẻ  
  
  
  
100% Rating
Điểm: 5 / 5
2 Bình chọn

admin

Mang giá trị lại cho tất cả mọi người

Bigcoin Việt Nam - Phân tích đầu tư Bitcoin, Ethereum, đầu tư ICO theo 39 tiêu chí phân tích công nghệ