Skip to main content

· One min read
  • Contract Solidity khi dịch ra bytecode không được quá 24kb nếu không giao dịch deploy contract sẽ bị reject.

  • EVM - Etherium Virtual Machine là chương trình thực thi bytecode (sau khi được dịch ra từ Solidity hay Rust).

  • Thư viện (Library) dùng trong contract sẽ đc compile và deploy ra 1 địa chỉ riêng khác với địa chỉ deploy contract. Sau đó trong contract bytecode, ở các vị trí gọi đến hàm public của thư viện sẽ được link đến địa chỉ deploy của thư viện và gọi hàm bằng cách sử dụng opcode delegatecall của EVM.

  • Đối với các hàm internal của thư viện được dùng trong contract, bytecode của hàm sẽ được nhúng trực tiếp vào trong contract, và contract gọi đến hàm bằng cách dùng opcode JUMP giống như gọi các hàm internal bên trong contract (khác với việc sử dụng delagatecall đối với hàm public của thư viện). Lưu ý là chỉ những hàm internal được gọi mới được nhúng vào contract bytecode (maximum 24kb).

  • Selector

bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7

· 13 min read

Smartcontract trên ETH hay các hệ tương thích EVM (Etherium Virtual Machine) như BSC hay Avax có tính chất immutable tức là code khi đã được deploy lên 1 địa chỉ xác định thì không thể thay đổi. Điều này giúp tăng tính minh bạch và việc audit hoạt động của smartcontract thuận tiện hơn cho người dùng. Tuy nhiên lại có 1 điểm bất lợi rõ ràng là code không thể thay đổi để sửa lỗi hay thêm tính năng mới cho smartcontract, mà đây lại là những công việc rất quan trọng và diễn ra liên tục trong quá trình phát triển sản phẩm.

· 11 min read

ERC20 là chuẩn dành cho những đồng token có tính chất giống hệt nhau (fungible token), giống như 1 đồng USD có giá trị hoàn toàn tương đương với 1 đồng USD bất kỳ nào khác. Đối với các loại tài sản có tính chất riêng biệt độc nhất (Non Fungible Token - NFT) như mỗi mảnh đất, mỗi vật phẩm, nhân vật trong game..., chúng ta có chuẩn ERC721 để số hóa các loại tài sản như vậy trên Blockchain.

· 12 min read

Token ERC20 là 1 trong những ứng dụng Blockchain cơ bản và phổ biến nhất hiện nay.

Các khái niệm cơ bản

Để hiểu cách thức hoạt động và cài đặt 1 đồng token trên mạng lưới Blockchain trước hết ta nhắc lại sơ qua các khái niệm sau

  • Blockchain
  • Transaction
  • Account
  • Smartcontract
  • ERC20

· 20 min read

Cây đỏ đen (red black tree) là cây nhị phân tìm kiếm được ràng buộc thêm bởi 1 số điều kiện (constraint) để đảm bảo cây luôn ở trạng thái tương đối cân bằng (độ dài giữa các nhánh cây không chênh lệch nhau quá lớn), nhằm tối đa hóa hiệu quả các thao tác tìm kiếm và lưu trữ trên cây.

· 16 min read

B-Tree là cây tìm kiếm tự cân bằng và là dạng tổng quát của cây nhị phân tìm kiếm trong đó 1 node có thể có nhiều hơn 1 phần tử. Không như các cây tìm kiếm tự cân bằng khác như AVL tree hay Redblack tree được sử dụng chủ yếu trong bộ nhớ RAM, BTree được sinh ra do nhu cầu lưu trữ và tìm kiếm dữ liệu trên bộ nhớ cứng (hard disk).

· 9 min read

Thuật toán Knuth Morris Pratt (KMP) là thuật toán hiệu quả tìm chuỗi con (chuỗi mẫu - pattern) bên trong chuỗi cha.

Bài toán

Cho 1 chuỗi mẫu pattern P độ dài m và đoạn text T độ dài n, tìm tất cả các lần mà chuỗi P xuất hiện bên trong đoạn text T. Ta có thể coi n > m.

Cách giải đơn thuần (naive solution)

Dùng 2 vòng lặp

  • Thử lần lượt từng vị trí trên T (n - m + 1 vị trí [0...n - m])
  • Với từng vị trí trên T, thử khớp P bắt đầu từ vị trí này (m kí tự), cho đến khi khớp hoàn toàn hoặc gặp kí tự sai khác.

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.