0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Viết Hợp Đồng Thông Minh cho Thị Trường Kỹ Thuật Số trên Algorand Sử Dụng Python

Đăng vào 3 tuần trước

• 4 phút đọc

Hướng Dẫn Viết Hợp Đồng Thông Minh cho Thị Trường Kỹ Thuật Số trên Algorand Sử Dụng Python

Hôm nay, chúng ta sẽ bắt đầu hành trình tạo ra một hợp đồng thông minh cho thị trường kỹ thuật số trên chuỗi khối Algorand, sử dụng ngôn ngữ lập trình Python và công cụ Algokit.

Giới Thiệu về Algokit

Algokit là bộ công cụ toàn diện được thiết kế cho việc phát triển ứng dụng phi tập trung (dApp) trên chuỗi khối Algorand. Algokit mang đến một môi trường lập trình thuận tiện bao gồm localnet, nhiều mẫu hợp đồng, và nhiều tiện ích khác, giúp việc phát triển trở nên dễ dàng và tiếp cận hơn.

Trước đây, việc viết hợp đồng thông minh trên Algorand thường liên quan đến việc sử dụng ngôn ngữ PyTEAL. Tuy nhiên, mới đây, Algorand đã ra mắt Algokit 2.0, cho phép viết hợp đồng thông minh bằng ngôn ngữ Python thuần.

Để bắt đầu một dự án mới, chúng ta sử dụng lệnh sau:

algokit init

Sau đó, chọn mẫu là "Hợp Đồng Thông Minh" và ngôn ngữ là "Python". Tiếp theo, điền thông tin cần thiết và Algokit sẽ tạo ra một dự án mới cho chúng ta.

Viết Hợp Đồng Thông Minh

Sau khi tạo dự án, chúng ta điều hướng đến thư mục Hợp Đồng Thông Minh và mở tệp Contract.py để bắt đầu viết hợp đồng thông minh.

Phương Thức Tạo Ứng Dụng

python Copy
from algopy import *

class Digital_marketplace(ARC4Contract):
    assetId: UInt64
    unitaryPrice: UInt64

    # tạo ứng dụng
    @arc4.abimethod(allow_actions=["NoOp"], create="require")
    def createApplication(self, assetId: Asset, unitaryPrice: UInt64) -> None:
        self.assetId = assetId.id
        self.unitaryPrice = unitaryPrice

Phương thức này chịu trách nhiệm tạo ra một ứng dụng để bán một tài sản trong thị trường kỹ thuật số. Nó nhận hai tham số: assetId, ID của tài sản sẽ được bán, và unitaryPrice, giá của tài sản. Phương thức này thiết lập các thuộc tính assetIdunitaryPrice của hợp đồng.

Cập Nhật Giá Niêm Yết

python Copy
@arc4.abimethod
def setPrice(self, unitaryPrice: UInt64) -> None:
    assert Txn.sender == Global.creator_address
    self.unitaryPrice = unitaryPrice

Phương thức này cho phép người tạo hợp đồng cập nhật giá niêm yết của tài sản. Nó nhận giá unitaryPrice làm tham số và cập nhật thuộc tính unitaryPrice của hợp đồng. Phương thức này chỉ có thể được gọi bởi người tạo hợp đồng.

Tham Gia Tài Sản sẽ Bán

python Copy
@arc4.abimethod
def optInToAsset(self, mbrPay: gtxn.PaymentTransaction) -> None:
    assert Txn.sender == Global.creator_address
    assert not Global.current_application_address.is_opted_in(Asset(self.assetId))
    assert mbrPay.receiver == Global.current_application_address
    assert mbrPay.amount == Global.min_balance + Global.asset_opt_in_min_balance
    itxn.AssetTransfer(
        xfer_asset=self.assetId,
        asset_receiver=Global.current_application_address,
        asset_amount=0,
    ).submit()

Phương thức này cho phép người dùng tham gia vào tài sản sẽ được bán trong thị trường. Nó nhận một giao dịch thanh toán mbrPay làm tham số và đảm bảo rằng người gửi là người tạo hợp đồng, tài sản chưa được tham gia trước đó và số tiền thanh toán là đủ. Sau khi xác thực thành công, nó sẽ cho phép người dùng tham gia vào tài sản.

Mua Tài Sản

python Copy
@arc4.abimethod
def buy(self, buyerTxn: gtxn.PaymentTransaction, quantity: UInt64) -> None:
    assert self.unitaryPrice != UInt64(0)
    assert Txn.sender == buyerTxn.sender
    assert Txn.receiver == Global.current_application_address
    assert buyerTxn.amount == self.unitaryPrice * quantity

    itxn.AssetTransfer(
        xfer_asset=self.assetId,
        asset_receiver=Txn.sender,
        asset_amount=quantity,
    ).submit()

Phương thức này giúp thực hiện việc mua tài sản bởi người mua. Nó nhận một giao dịch thanh toán buyerTxn và số lượng tài sản cần mua làm tham số. Nó xác minh rằng giá đã được thiết lập và tương ứng với số tiền thanh toán. Sau khi xác thực thành công, nó sẽ chuyển giao tài sản cho người mua.

Xóa Ứng Dụng

python Copy
@arc4.abimethod(allow_actions=["DeleteApplication"])
def deleteApplication(self) -> None:
    assert Txn.sender == Global.creator_address
    itxn.AssetTransfer(
        xfer_asset=self.assetId,
        asset_receiver=Global.creator_address,
        asset_amount=0,
        asset_close_to=Global.creator_address,
    ).submit()

    itxn.Payment(
        receiver=Global.creator_address,
        amount=0,
        close_remainder_to=Global.creator_address,
    ).submit()

Phương thức này cho phép người tạo hợp đồng xóa ứng dụng và thu hồi bất kỳ tài sản và tiền nào còn lại. Nó đảm bảo rằng người gửi là người tạo hợp đồng. Sau khi xác thực thành công, nó sẽ chuyển giao các tài sản và tiền còn lại cho người tạo hợp đồng và xóa ứng dụng.

Mã Nguồn Đầy Đủ

Xem mã nguồn đầy đủ tại: GitHub - Algorand Bootcamp

Xây Dựng Hợp Đồng Thông Minh

Sau khi viết xong hợp đồng thông minh, chúng ta cần xây dựng hợp đồng để triển khai nó lên chuỗi khối Algorand. Sử dụng lệnh sau:

algokit project run build

Kết Luận

Qua bài viết này, chúng ta đã có cái nhìn tổng quan về việc viết hợp đồng thông minh trên Algorand sử dụng ngôn ngữ Python và công cụ Algokit. Hy vọng rằng bạn đã thu nhận thêm kiến thức và sẵn sàng theo đuổi các dự án của mình trên chuỗi khối Algorand.

Đừng ngần ngại tham gia cộng đồng Algorand và tiếp tục khám phá công nghệ blockchain thú vị này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào