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 - 640 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á Bitcoin ngày 22/10: Ngày đầu tuần với một xu hướng giảm


Sau chỉ một ngày, giá Bitcoin đã chạm ngưỡng khối lượng giao dịch thấp nhất trong năm điều này chứng tỏ rẳng Bitcoin không cho thấy dấu hiệu có thể phục hồi và vượt mức 6.000 USD.


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

 

Trong 24 giờ qua, giá Bitcoin chỉ dao động được khoảng 50 USD sau khi tăng lên mức 6.500 USD trong ngày hôm qua, theo Coindesk.


Diễn biến giá Bitcoin (Nguồn CoinDesk)

 

Sáng ngày hôm nay, giá Bitcoin ghi nhận vào thời điểm 8h30 là 6.489 USD, giảm 0,12% so với 24 giờ trước, theo CoinMarketCap.

Trên thị trường, có 77/100 đồng tiền hàng đầu theo giá trị thị trường đang có xu hướng giảm giá so với 24 giờ trước (thống kê tại thời điểm viết bài).


Toàn cảnh thị trường (Nguồn Coin360)

Trong top 10, có 9/10 đồng tiền số giảm giá trong 24 giờ qua.


Top 10 đồng coin theo vốn hóa (Nguồn Coinmarketcap)

 

Ethereum giảm 1,11% xuống 204,9 USD. Hôm qua, những người phát triển lõi của Ethereum “chính thức” đồng ý hoãn lại kế hoạch hard fork Constantinople cho đến ít nhất là tháng 1/2019. Đồng thời cũng kết luận rằng việc nâng cấp mạng lưới nên được gọi là “cập nhật” thay vì “Hard fork”.

XRP giảm 1,59% xuống 0,4545 USD. Bitcoin cash giảm 0,69% xuống 447 USD. Đồng coin tăng duy nhất trong top 10 là Monero với tỉ lệ tăng trưởng cũng chỉ 0,4% lên 104 USD.

Tổng vốn hóa thị trường tiền mã hóa ghi nhận được vào thời điểm 8h30 sáng nay là 208,69 tỉ USD, trở về mức của sáng hôm qua sau khi tăng lên đến 212 tỉ USD vào lúc 21h27.


Tổng vốn hóa thị trường tiền mã hóa (Nguồn CoinMarketcap)

 

Khối lượng giao dịch 24 giờ ghi nhận được ở mức 9,9 tỉ USD, gần như không đổi so với con số của ngày 21/10.

Trong 24 giờ qua, Bitcoin cũng chạm ngưỡng khối lượng giao dịch thấp nhất trong năm, cho thấy thiếu động lực và sức mạnh trong việc phục hồi ở vùng trên 6.000 USD.

Trên CoinMarketCap, khối lượng giao dịch của bitcoin giảm xuống 3,1 tỉ USD trong khi con số này trên CoinCap là 1,91 tỉ USD. Điểm thấp nhất trước đó là 3,2 tỉ USD trên CoinMarketCap và 2 tỉ USD trên CoinCap.

Khối lượng giao dịch thấp bị ảnh hưởng bởi việc giảm giá trong diễn biến vào Chủ nhật có thể là một ảnh hưởng tiêu cực từ xu hướng ngắn hạn của đồng tiền thống trị này.

 

Duy trì thành công ngưỡng hỗ trợ 6.000 USD

Bitcoin vừa duy trì thành công ngưỡng hỗ trợ 6.000 USD kể từ giữa năm 2018, tạo nên cơ sở tốt để đồng tiền này tăng trưởng mạnh trong tương lai gần. 

 

Bitcoin giữ ở mức ‘chán ngán’ trên 6.000 USD càng lâu, thì bạn sẽ càng hứng thú cho đợt tăng giá tiếp theo. Đáy mạnh bao nhiêu thì tăng giá mạnh bấy nhiêu, theo nhà đầu tư tiền mã hóa Alex Saunders.

 

Phó thống đốc Ngân hàng Trung ương Nhật Bản (BOJ), Masayoshi Amamiya vừa một lần nữa nhắc lại lập trường tiêu cực của mình về việc phát hành tiền mã hóa của ngân hàng Trung ương (CBDC), theo New York Times đưa tin ngày 20/10.

Phát biểu trong cuộc họp ngày thứ 7 tại Nagoya, Amamiya bày tỏ những nghi ngờ về việc sử dụng CBDC, ông cho rằng những đồng tiền mã hóa như vậy sẽ không cải thiện hệ thống tiền tệ đang tồn tại. Amamiya cũng khẳng định rằng BOJ không có kế hoạch phát hành tiền mã hóa của riêng mình.


Ngân hàng Trung ương Nhật Bản và quan điểm về phát hành tiền mã hóa

 

Tờ báo này đưa tin rằng một số chuyên gia đang xem xét đưa CBDC trở thành 1 công cụ tài chính của ngân hàng Trung ương trong việc quản lý nền kinh tế khi lãi suất giảm về 0. Theo lý thuyết này, CBDC sẽ cho phép ngân hàng trung ương kích thích nền kinh tế bằng cách đưa ra lãi suất cao hơn cho những khoản tiền gửi từ cá nhân và tổ chức, điều mà sau đó sẽ tạo động lực cho họ giao dịch nhiều hơn.

 

Amamiya cho biết thêm:Để ngân hàng trung ương vượt qua lãi suất dưới 0, họ sẽ phải loại bỏ tiền mặt từ xã hội và điều này không phải là một lựa chọn cho ngân hàng trung ương.

 

*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á Bitcoin ngày 22/10: Ngày đầu tuần với một xu hướng giảm, tại chuyên mục: Phân tích

Theo: Bitcoin-news

Biên soạn 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ệ