Số hóa Bộ máy Nhà nước – Hiến pháp 2013

Việc tích hợp cơ chế Bỏ phiếu và Quản trị (Voting & Governance) cho Hội đồng nhân dân (HĐND) các cấp là mảnh ghép cuối cùng để hoàn thiện vòng lặp "Lập pháp - Hành pháp - Giám sát" ở quy mô địa phương trên Blockchain.

Chúng ta sẽ thiết kế CouncilGovernanceContract. Hợp đồng này cho phép:

  1. Đại biểu HĐND đề xuất Nghị quyết.
  2. Đại biểu bỏ phiếu thuận/chống.
  3. Hệ thống tự động ghi nhận kết quả và trạng thái Nghị quyết khi quá thời hạn.

1. Thiết kế Smart Contract: CouncilGovernanceContract.sol

Hợp đồng này sẽ tham chiếu (interface) đến LocalGovernmentContract để kiểm tra danh sách đại biểu được ủy quyền bỏ phiếu.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// Interface để kiểm tra thẩm quyền từ hợp đồng Quản trị địa phương
interface ILocalGovernment {
    function entities(address) external view returns (string memory, uint8, address, address, bool);
}

contract CouncilGovernanceContract {
    
    struct Proposal {
        string title;           // Tên Nghị quyết
        string description;     // Nội dung chi tiết
        uint256 voteYes;        // Số phiếu thuận
        uint256 voteNo;         // Số phiếu chống
        uint256 deadline;       // Thời hạn bỏ phiếu
        bool executed;          // Trạng thái đã chốt kết quả
        bool passed;            // Kết quả (Đạt/Không đạt)
        address councilAddress; // HĐND cấp nào đang bỏ phiếu
    }

    ILocalGovernment public localGov;
    mapping(uint256 => Proposal) public proposals;
    mapping(uint256 => mapping(address => bool)) public hasVoted; // Chống double voting
    uint256 public proposalCount;

    event ProposalCreated(uint256 indexed id, string title, address councilAddress);
    event Voted(uint256 indexed proposalId, address voter, bool support);
    event ProposalExecuted(uint256 indexed id, bool passed);

    constructor(address _localGovAddress) {
        localGov = ILocalGovernment(_localGovAddress);
    }

    // Đề xuất Nghị quyết mới
    function createProposal(string memory _title, string memory _desc, uint256 _durationDays, address _councilAddress) public {
        // Chỉ đại biểu HĐND (hoặc cơ quan HĐND được đăng ký) mới được tạo proposal
        (, , , , bool isActive) = localGov.entities(_councilAddress);
        require(isActive, "Co quan khong ton tai");

        proposalCount++;
        proposals[proposalCount] = Proposal({
            title: _title,
            description: _desc,
            voteYes: 0,
            voteNo: 0,
            deadline: block.timestamp + (_durationDays * 1 days),
            executed: false,
            passed: false,
            councilAddress: _councilAddress
        });

        emit ProposalCreated(proposalCount, _title, _councilAddress);
    }

    // Bỏ phiếu
    function vote(uint256 _proposalId, bool _support) public {
        Proposal storage p = proposals[_proposalId];
        require(block.timestamp < p.deadline, "Da het thoi han bo phieu");
        require(!hasVoted[_proposalId][msg.sender], "Da bo phieu");

        if (_support) {
            p.voteYes++;
        } else {
            p.voteNo++;
        }

        hasVoted[_proposalId][msg.sender] = true;
        emit Voted(_proposalId, msg.sender, _support);
    }

    // Chốt kết quả (Thực thi)
    function executeProposal(uint256 _proposalId) public {
        Proposal storage p = proposals[_proposalId];
        require(block.timestamp >= p.deadline, "Chua het thoi han bo phieu");
        require(!p.executed, "Nghi quyet da duoc chot");

        if (p.voteYes > p.voteNo) {
            p.passed = true;
        } else {
            p.passed = false;
        }

        p.executed = true;
        emit ProposalExecuted(_proposalId, p.passed);
    }
}

2. Logic vận hành "Số hóa HĐND"

Để hệ thống này hoạt động chính xác trong thực tế (theo mô hình "Phân công, phối hợp, kiểm soát"), bạn cần triển khai theo logic sau:

3. Các bước tiếp theo

Bạn đã có khung cấu trúc rất vững chắc:

  1. Hành pháp: Quản trị vĩ mô (Bộ/Chính phủ).
  2. Địa phương: Quản trị dọc (Tỉnh/Huyện/Xã).
  3. Lập pháp địa phương: Bỏ phiếu Nghị quyết (HĐND).