Trang chủ Tạp chí Lập trình smart contracts: Phần 4 Bài toán thực tế

Lập trình smart contracts: Phần 4 Bài toán thực tế

Chúng ta cùng đi vào giải quyết bài toán thực tế, qua đó ta có thể thấy được ưu và nhược điểm của smart contracts trên nền Ethereum, cũng như nhìn cận cảnh quá trình phát triển một dApp thực sự.

Chọn chủ đề

Mình chọn chủ đề hợp đồng làm việc part time

Phân tích bài toán

Bài toán hợp đồng làm việc part time sẽ bao gồm những chức năng sau:

  • Tạo hợp đồng part time
  • Định ra khoảng thời gian để hợp đồng có hiệu lực
  • Giải quyết tranh chấp
  • Hiển thị các hợp đồng đang khả dụng
  • Kí kết các hợp đồng khả dụng
  • Thế chấp và chi trả hợp đồng
  • Xóa bỏ hợp đồng quá hạn
  • Đánh giá các cá nhân

Vấn đề được giải quyết khi áp dụng smart contracts và dApp:

  • Giảm thiểu chi phí vận hành
  • Đảm bảo hợp đồng luôn được thực thi như đã định
  • Thời gian của hợp đồng có thể trong vòng kéo dài trong 1 tiếng
  • Minh bạch và tạo ra market mở cho mọi cá nhân tham gia

Mô hình của hệ thống

Smart contracts

Phần màu xanh mô tả vể quá trình phát triển smart contracts:

  • Smart contract được viết bằng một ngôn ngữ phổ biến như Solidity (Viper).
  • Smart contract thông qua trình biên dịch solidity compiler (solc) được biên dịch thành operation code
  • Operation code được deploy vào blockchain của Ethereum tại một logical address.

Phần màu cam mô tả front-end của dApp:

  • Private key & public key sẽ lưu trữ ở phía client side, điều này khác biệt hoàn với các application truyền thống, khi mà phần quan trọng nhất lại không nắm bởi third party
  • GUI có thể được xây dựng bằng bất cứ thứ gì, thuận tiện với developer. Trong ví dụ này mình chọn Web UI (HTML/CSS/JS).
  • Users sẽ tương tác với smart contracts thông qua Web UI. Và Web UI còn hiển thị dữ liệu của smart contracts.
  • Mỗi lần trigger methodscủa smart contract thông qua Web UI sẽ tiêu tốn Ethereum.

Tiến hành

Mình thực hiện lệnh truffle init để tạo khởi tạo project sử dụng development framework là truffle. Viết mã nguồn đầu tiên của Part Time contract.

Toàn bộ smart contract như sau

pragma solidity ^0.4.17;

contract PartTime {

struct Job {

uint256 id;

address creator;

uint256 salary;

bytes title;

bytes description;

}

uint256 totalJob;

mapping (uint256 => Job) public jobData;

function createJob(uint256 salary, bytes title, bytes description)

returns(uint256 jobId)

{

// Saving a little gas by create a temporary object

Job memory newJob;

// Assign jobId

jobId = totalJob;

newJob.id = jobId;

newJob.title = title;

newJob.description = description;

newJob.salary = salary;

newJob.creator = msg.sender;

// Append newJob to jobData

jobData[totalJob++] = newJob;

}

}

Struct job

Mình define struct Job chứa thông tin của một công việc part time, bao gồm các thông tin như id, title, description, salary, creator:

struct Job {

uint256 id;

address creator;

uint256 salary;

bytes title;

bytes description;

}

Mapping dữ liệu

Mình muốn có thể chứa nhiều công việc trong smart contract, nên mình khai báo một mapping để chứa được nhiều jobs hơn, đoạn code này làm nhiệm vụ mapping một unsigned integer 256 bits vào một struct job:

mapping (uint256 => Job) public jobData;

Mapping thế này cho phép bạn truy cập lại dữ liệu cũ khi bạn có được index của dữ liệu, thông qua sử dụng toán tử [] (khá giống với array, nhưng dùng mapping tiết kiệm gas hơn).

Thêm một record vào bảng mapping

function createJob(uint256 salary, bytes title, bytes description)

returns(uint256 jobId)

{

// Saving a little gas by create a temporary object

Job memory newJob;

// Assign jobId

jobId = totalJob;

newJob.id = jobId;

newJob.title = title;

newJob.description = description;

newJob.salary = salary;

newJob.creator = msg.sender;

 

// Append newJob to jobData

jobData[totalJob++] = newJob;

}

Function này sẽ thêm một job vào phía cuối mapping table chứa rất nhiều struct job mà chúng ta lưu trong jobData.

Thử nghiệm deploy

Smart contracts

Đầu tiên mình thực thi ganache-cli:

Smart contracts

Giờ chúng ta open một command prompt khác thực thi:Toàn bộ mã nguồn các bạn có thể tải về tại https://github.com/chiro-hiro/part-time-dapp (phân phối theo giấy phép MIT).

Dislaimer: Đây là thông tin cung cấp dưới dạng blog cá nhân, không phải thông tin tổng hợp hay lời khuyên đầu tư. Chúng tôi không chịu trách nhiệm về các quyết định đầu tư của bạn.

MỚI CẬP NHẬT

avax

AVAX sẽ giảm xuống 7 đô la trong bối cảnh tín hiệu giảm giá?

Khi thị trường crypto trải qua giai đoạn điều chỉnh dưới ảnh hưởng của tâm lý bi quan, đa số các altcoin đều giảm...

Coinbase nộp đơn xin chấp thuận hợp đồng tương lai XRP với CFTC

Sàn giao dịch Coinbase đã nộp đơn tự chứng nhận lên Ủy ban Giao dịch Hàng hóa Tương lai Hoa Kỳ (CFTC) để cho...
pi

Niêm yết trên Coinbase có thể cứu PI Coin khỏi sóng gió?

Cộng đồng 60 triệu người dùng Pi Network đang rơi vào hoảng loạn khi PI Coin tiếp tục giảm thêm 10% chỉ trong một...

Cá voi Cardano gom 150 triệu USD ADA trong 72 giờ – Đợt phục...

Cardano (ADA) vừa trải qua giai đoạn đầy khó khăn khi nỗ lực phục hồi không thành công và thị trường chung vẫn trong...
FDUSD

First Digital quy đổi 26 triệu đô la FDUSD sau khi mất chốt, bác...

First Digital đã hoàn trả gần 26 triệu đô la trong các đợt rút FDUSD sau khi stablecoin của họ tạm thời mất chốt...
Bitcoin

Sự tăng trưởng của Bitcoin DeFi sẽ thúc đẩy nhu cầu và chấp nhận

Giá trị khóa (TVL) vào Bitcoin DeFi (BTCFi) tăng vọt hơn 2.700% trong năm qua. Theo nghiên cứu mới từ Binance, điều này có...

Tin vắn Crypto 04/04: Bitcoin vẫn đang trong vùng nguy hiểm cùng tin tức...

Từ nhận định Bitcoin vẫn đang trong vùng nguy hiểm đến Ủy ban Ngân hàng Thượng viện Mỹ bỏ phiếu thông qua đề cử...

Dữ liệu on-chain cho thấy các nhà phát hành ETF lớn đang mua Bitcoin

Theo dữ liệu mới từ Arkham Intelligence, ba nhà phát hành Bitcoin ETF lớn đang mua lượng BTC khổng lồ trong hôm nay. Các...
Bitcoin

Công ty game Nhật Bản Enish đầu tư 100 triệu yên vào Bitcoin

Enish, công ty game được niêm yết trên Sàn giao dịch chứng khoán Tokyo, mới đây đã công bố khoản đầu tư 100 triệu...
altcoin

Altcoin sắp có đợt tăng giá lớn cuối cùng, nhưng chỉ một số ít...

Theo một nhà phân tích, các altcoin có thể chỉ còn một đợt tăng giá cuối cùng trong chu kỳ này, nhưng chỉ những...

Dự đoán giá SUI: Bứt phá trên $2,52 có kích hoạt đảo chiều xu...

SUI đang hình thành mô hình vai đầu vai ngược - một tín hiệu đảo chiều tăng điển hình thường xuất hiện sau các...

Saylor cho biết tính thanh khoản cao của Bitcoin biến nó thành tài sản...

Michael Saylor, đồng sáng lập Strategy, cho biết trong một tuyên bố gần đây trên X rằng biến động giá gần đây của Bitcoin...

Hồ sơ kỳ lạ vừa được đưa vào hồ sơ vụ kiện giữa SEC...

Một bên không phải là bên liên quan đã nộp một lá thư khẩn cấp vào ngày 2 tháng 4 cho Thẩm phán liên...

XRP giữ mức hỗ trợ $2 khi biểu đồ cho thấy mức tăng 73%

XRP ổn định gần mức hỗ trợ $2 sau đợt bán tháo trên toàn thị trường khiến altcoin này và một số loại tiền...

DappRadar: TVL DeFi giảm 27% trong khi AI, ứng dụng xã hội tăng đột...

Nền kinh tế bất ổn và một vụ hack sàn giao dịch nghiêm trọng đã làm giảm tổng giá trị bị khóa trong các...

SEC họp với BlackRock và Crypto Council để thảo luận quy định về ETF...

Lực lượng đặc nhiệm về tiền điện tử của Ủy ban Chứng khoán và Giao dịch Hoa Kỳ (SEC) đã tổ chức các cuộc...