Địa chỉ trên Blockchain Cardano

Địa chỉ trên Blockchain Cardano

Địa chỉ trên Blockchain Cardano

Lời mở đầu

Địa chỉ là một khái niệm cơ bản trên blockchain Cardano. Kiến thức về địa chỉ là một trong những bước đầu tiên cần phải trang bị khi tìm hiểu về hệ sinh thái Cardano. 

Tuy nhiên, địa chỉ trên Cardano cũng khá phức tạp do có sự thay đổi theo thời gian, cũng như đòi hỏi cần có một số kiến thức nhất định về hệ sinh thái Cardano, cũng như kiến thức mã hóa. 

Ở bài viết này, chúng ta sẽ tìm hiểu một cách cơ bản nhất về địa chỉ, và các loại địa chỉ ở trên blockchain Cardano.

Phân loại địa chỉ

Hình 1: Thiết kế của Shelley address

Hình 1 mô tả tổng quan về các loại địa chỉ trên Cardano. Về cơ bản, blockchain Cardano có hai loại địa chỉ, đó là địa chỉ thanh toán (Payment address) và địa chỉ ủy thác (Staking address). Hai địa chỉ này có mối liên hệ mật thiết với nhau.

A. Địa chỉ thanh toán (Payment address)

Payment address lại được chia thành hai loại địa chỉ nhỏ hơn tương ứng với sự phát triển qua từng giai đoạn của Blockchain Cardano. 

  • Địa chỉ Byron (Byron address) là địa chỉ được sử dụng ở kỷ nguyên Byron trở về trước. 
  • Địa chỉ Shelley là địa chỉ được sử dụng bắt đầu từ kỷ nguyên Shelley. Nếu bạn chưa biết về các kỷ nguyên của Cardano, bạn có thể tham khảo ở đây

Hiện tại chúng ta đã ở sau kỷ nguyên Shelley, nên đa số địa chỉ mà chúng ta sử dụng sẽ là loại địa chỉ này. Các địa chỉ có đặc điểm rất dễ nhận biết, đó là bắt đầu bằng addr1

ví dụ addr1vpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5eg0yu80w.

Chúng ta sẽ đi sâu hơn về địa chỉ Shelley ở phần dưới. 

B. Địa chỉ ủy thác (Stake address)

Địa chỉ ủy thác (Stake address) là địa chỉ được sử dụng để trả thưởng khi chúng ta ủy thác ADA vào các pool. Địa chỉ ủy thác chỉ chứa thông tin ủy thác (Stake credential). Lưu ý là chúng ta không thể sử dụng Stake address để gửi nhận thanh toán giống như Payment address. 

Stake address sẽ bắt đầu bằng stake1, ví dụ stake1vpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5egfu2p0u.  

Địa chỉ Stake address cũng được tạo ra đồng thời khi chúng ta tạo địa chỉ Payment address, cho dù chúng ta có ủy thác vào các pool hay không.

C. Mối liên hệ

Shelley address và Stake address có mối liên hệ mật thiết với nhau. Cả hai địa chỉ này đều được hash từ private key của một địa chỉ ví. Hình 1 cho ta thấy, một địa chỉ Shelley address sẽ được cấu tạo bởi 2 thành phần: 

  • Thành phần chứa thông tin về thanh toán (payment credential) 
  • Thành phần chứa thông tin về ủy thác (Stake Address Reference). 

Trong một địa chỉ Shelley address, thông tin về ủy thác có thể tồn tại hoặc không (tùy vào loại địa chỉ Shelley mà chúng ta sử dụng, sẽ trình bày ở bên dưới), Hay nói cách khác, Shelley address có thể bao gồm Stake address hoặc không.

Dưới đây là 1 số ví dụ về các địa chỉ Byron, Shelley và Stake address. Lưu ý là những địa chỉ này đã được mã hóa dưới dạng Bech32 hoặc Base58 để người dùng có thể dễ dàng nhận diện.

Address Encoding Example
Byron address Base58 37btjrVyb4KDXBNC4haBVPCrro8AQPHwvCMp3RFhhSVWwfFmZ6wwzSK6JK1hY6wHNmtrpTf1kdbva8TCneM2YsiXT7mrzT21EacHnPpz5YyUdj64na
Shelley address Bech32 addr1vpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5eg0yu80w
Stake address Bech32 stake1vpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5egfu2p0u

Cấu tạo địa chỉ dưới dạng nhị phân

Trước khi mã hóa, cho dù là Payment address hay Stake address, một địa chỉ của blockchain Cardano chỉ là các chuỗi số nhị phân. Chuỗi số nhị phân này được cấu tạo từ hai thành phần: phần header chứa thông tin quy định loại địa chỉ, và phần payload chứa địa chỉ đó.

Phần header có 8 bit nhị phân, trong đó 4 bit đầu tiên quy định loại địa chỉ (Shelley, Byron hay Stake address), 4 bit tiếp theo quy định mạng Mainet hay Testnet. Như vậy, nếu có một địa chỉ bắt đầu là 0000 0001 …. (hay 01 mã HEX) thì ta biết rằng đây là địa chi Shelley address trên mạng Mainet. Còn nếu 1 địa chỉ bắt đầu bằng 1110 0000 (hay e1 mã HEX) thì đây là địa chỉ Stake address trên Testnet.

Base address, Pointer Address, Enterprise Address là gì?

Địa chỉ Shelley address lại có thể chia được thành các loại địa chỉ nhỏ hơn là : địa chỉ cơ sở (Base address), địa chỉ dạng con trỏ (Pointer address), và đia chỉ doanh nghiệp (Enterprise address). 

Những địa chỉ này sinh ra là do cách tham chiếu tới Stake Credential khác nhau, hay nói cách khác là phần Stake Address Reference khác nhau. Ví dụ: nếu chúng ta tham chiếu tới phần Stake Credential thông qua giá trị (Value), thì ta sẽ có Base address, nếu chúng ta tham chiếu qua con trỏ, ta sẽ có Pointer address, hoặc nếu không có phần tham chiếu này, chúng ta sẽ có địa chỉ Enterprise address.

Dưới đây là ví dụ về Base address, Pointer address, và Enterprise address.

Base address chứa thông tin về phần ủy thác (stake credential) ở ngay trong bản thân nó. Nghĩa là Base address được hình thành do ghép thông tin payment credential và stake credential với nhau (xem lại Hình 1 mối quan hệ giữa payment và stake credential). Base address cũng là địa chỉ mà đa số người dùng chúng ta đang sử dụng. 

Enterprise address không chứa thông tin ủy thác, do vậy ta không thể dùng địa chỉ này để ủy thác vào các pool. Enterprise address ban đầu được thiết kế cho các sàn giao dịch hoặc các tổ chức, công ty sử dụng. Khi sử dụng địa chỉ này, các sàn giao dịch hay tổ chức đó thuyết phục người dùng rằng, họ không sử dụng tài sản của người dùng để ủy thác vào các pool và trục lợi từ đó.

Pointer address chứa thông tin ủy thác một cách gián tiếp. Thông tin ủy thác có thể xác định thông qua Slot ID, Index và Certificate index. Do vậy thay vì lưu trữ một cách trực tiếp như Base address, Pointer address chỉ lưu trữ thông tin về Slot ID, Index, và Certificate index. Trên thực tế, pointer address không được sử dụng nhiều trên blockchain Cardano do một số hạn chế của loại địa chỉ này. 

Ở dưới dạng nhị phân, ta có thể phân biệt được ba địa chỉ này, nhưng sau khi mã hóa Bech32, thì tất cả các địa chỉ này đều bắt đầu là addr1.., do vậy ta không thể phân biệt được một cách chính xác. Nhưng ta có thể dựa vào độ dài ngắn của địa chỉ để phân biệt một cách tương đối. Enterprise address không chứa thông tin về stake credential, nên là địa chỉ ngắn nhất, chỉ có 59 ký tự. Pointer address có độ dài 68 ký tự, còn base address chứa toàn bộ thông tin ủy thác nên có độ dài dài nhất, 104 ký tự.

Cách kiểm tra địa chỉ

Địa chỉ mà chúng ta vẫn thường thấy bắt đầu bằng addr1.. là đã được mã hóa dưới dạng Bech32. Chúng ta có thể giải mã bằng cách sử dụng phần mềm Bech32 ở đây. Ví dụ sử dụng câu lệnh > bech32 <<< addr1q9hxupe…f8nm ta sẽ nhận được địa chỉ dưới dạng mã HEX là 01dea64b3a890f0…3cecf5b3. Vì địa chỉ này được bắt đầu là 01, nên đây là địa chỉ base address.

Một cách khác đơn giản hơn, đó là sử dụng các công cụ như cardanoscan.io hay cexplorer.io. Dưới đây là ví dụ sử dụng cardanoscan.io. Nhập địa chỉ Shelley address vào ô tìm kiếm, ta sẽ có kết quả tương tự như trên. Ngoài ra, chúng ta cũng có thể kiểm tra địa chỉ stake address mà chúng ta đang sử dụng ở phần Controlled Stake Key như minh hoạ ở hình bên dưới.

Kết luận

Như vậy chúng ta đã có thể hiểu và phân biệt được một số loại địa chỉ phổ biến ở trên blockchain Cardano. Hi vọng bài viết có thể cung cấp kiến thức ban đầu để chúng ta có thể tìm hiểu sâu hơn về các kiến thức liên quan tới địa chỉ, ví dụ về địa chỉ đọc sai (Mangled addresses – Franken address), hay HD Wallet.

Tham khảo

 

Leave a Reply

Your email address will not be published. Required fields are marked *