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 - 677 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

Phân tích giá ngày 10/12: Đầu tuần với sự khởi sắc của thị trường


Thứ hai, ngày 10 tháng 12, đầu tuần với sự phục hồi của thị trường khi phần lớn các đồng coin trong top 100 bảng xếp hạng đang cho thấy một màu xanh biểu tượng của sự tăng giá. Trong top 20 chỉ duy nhất TRON là đồng coin cho dấu hiệu giảm giá còn toàn bộ 19 đồng tiền mã hóa còn lại đều cho thấy sự tăng trưởng về giá.


Có thể bạn quan tâm:

 

Toàn cảnh thị trường ngày 10/12, nguồn: Coin360

 

Sau một tuần phá vỡ mức thấp trong năm thiết lập một đáy mới, tiền mã hóa hàng đầu thế giới hiện đang giao dịch ở mức khoảng 3.586 đô la theo thời gian báo chí, tăng gần 4% trong khoảng thời gian 24 giờ. Tuy nhiên đồng tiền mã hóa vẫn cho thấy mức giảm gần 9% trong tuần và hơn 44% trong tháng, theo Chỉ số giá Bitcoin của Cointelegraph .

Biểu đồ giá Bitcoin 7 ngày. Nguồn: Chỉ số giá Bitcoin của Cointelegraph

 

Tiền mã hóa lớn thứ hai theo giới hạn thị trường, Ripple ( XRP ), cũng cho thấy mức tăng 1,8% trong ngày và hiện đang giao dịch ở mức khoảng 0,31 đô la vào thời điểm báo chí, theo Chỉ số giá Ripple của Cointelegraph. Biểu đồ hàng tuần và hàng tháng của Ripple tương tự như biểu đồ của Bitcoin, với mức lỗ tương ứng gần 12% và 41%.

Biểu đồ giá 7 ngày của Ripple. Nguồn: Chỉ số giá Ripple của Cointelegraph

 

Tiền mã hóa được xếp hạng thứ ba theo giới hạn thị trường Ethereum ( ETH ) cũng cho dấu hiệu tăng trong ngày, chứng kiến ​​sự tăng trưởng gần 3% trong ngày và giao dịch ở mức khoảng 93 đô la theo thời gian báo chí. Trong tuần, altcoin giảm gần 14% và đang bị lỗ hơn 55% trong tháng qua.

Biểu đồ giá Ethereum 7 ngày. Chỉ số giá Ethereum của Cointelegraph

 

Tất cả mười đồng tiền hàng đầu còn lại trên CoinMarketCap đều có màu xanh lục, với EOS ( EOS ) hiển thị mức tăng nhiều nhất trong ngày, tăng 11,05 % và giao dịch ở mức khoảng 1,99 đô la cho thời gian viết bài.

Bitcoin SV (BSV) - một nhánh của hard fork Bitcoin Cash (BCH) ngày 15 tháng 11 cũng cho thấy dấu hiệu tăng gần 2% trong khoảng thời gian 24 giờ và giao dịch ở mức khoảng 102 đô la vào thời điểm báo chí. BSV đã được xếp hạng thứ năm vào ngày 8 tháng 12 , nhưng hiện đang ở vị trí thứ tám trên CoinMarketCap. BCH hiện đang xếp thứ năm, tăng khoảng 5,83% trong ngày và giao dịch ở mức khoảng 108 đô la theo thời gian báo chí.

TRON là đồng tiền duy nhất trong top 20 có dấu hiệu down giá, tại thời điểm viết bài đồng tiền đã giảm 0,16% và hiện giao dịch ở mức 0,01 đô la.

Tổng vốn hóa thị trường của tất cả các loại tiền mã hóa là khoảng 114 tỷ đô la tính đến thời điểm báo chí, tăng từ mức thấp hàng tuần vào ngày 7 tháng 12 chỉ dưới 104 tỷ đô la.

Biểu đồ 7 ngày về tổng vốn hóa thị trường của tất cả các loại tiền mã hóa, nguồn: CoinMarketCap

 

*Lưu ý: Tất cả những phân tích trên đều là ý kiểu chủ quan không phải là lời khuyên tài chính. Đầu tư Cryptocurrency là đầu tư mạo hiểm, chỉ nên đầu tư số vốn có thể mất được. Bạn hãy luôn luôn "Do your own research" trước khi đưa ra quyết định đầu tư.

 

Bạn đang đọc: Phân tích giá ngày 10/12: Đầu tuần với sự khởi sắc của thị trường, tại chuyên mục: Phân tích

Theo: Cointelegraph

Biên dịch bởi: Bigcoinvietnam

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

Alice

Là thành viên của Bigcoin core team giúp mang đến cho độc giả những thông tin nhanh và chất lượng nhất.

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ệ