Skip to main content

8 posts tagged with "evm"

View All Tags

· 12 min read

Bài viết này trình bày chi tiết cách thức vụ hack PrismaFi diễn ra vào ngày 2024-03-28.

Ứng dụng Prismafi

PrismaFi là ứng dụng tài chính phi tập trung (Decentralized Finance - Defi) cho phép user nạp tài sản thế chấp (Collateral - ETH hoặc những đồng token đại diện có giá trị tương đương) của mình vào và vay ra đồng tiền ổn định (tương đương USD). Mục đích của việc này là khi user muốn sử dụng tiền mặt nhưng ko muốn bán số ETH đang sở hữu vì thấy được tiềm năng tăng giá trong tương lai.

· 14 min read

Uniswap là ứng dụng giao dịch phi tập trung phổ biến đầu tiên sử dụng Automated Market Maker (AMM) thay cho orderbook mà chúng ta thường thấy ở các sàn giao dịch tập trung hay chứng khoán truyền thống.

Orderbook là tập hợp các lệnh đặt mua và lệnh đặt bán từ tất cả người dùng muốn tham gia trao đổi 1 cặp tiền tệ hàng hóa, khi mà lệnh mua và lệnh bán khớp nhau thì giao dịch được thực hiện giữa 2 người.

Tuy nhiên để quản lý 1 orderbook với số lượng lớn các order tốn rất nhiều tài nguyên tính toán của máy tính. Trong bối cảnh Blockchain có khả năng tính toán xử lý giao dịch đầu tiên là Ethereum giai đoạn đầu thì việc xử lý lượng lớn các order update liên tục theo thời gian thực gần như là không thể.

· 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