Skip to content

Hợp đồng và địa chỉ

Chain id 10143 (Monad testnet), RPC https://testnet-rpc.monad.xyz, explorer testnet.monadscan.com.

Địa chỉ đã deploy

Hợp đồngĐịa chỉBlock
IdentityRegistry0xa67ef35974bc8874318d249b6e74c7bd5870d1db63285812
CommunityRegistry0x41c19889a3218000482a1cd6e13640edcd16cf3263285812
PostRegistry0xaC74A6AF7Ec96e28F2885916673EF3B9aACF10F563379890
ChronoFeed0xF9CC631A04C5398Be97d5410303Cd61bD56d1a7963379890
HotFeed0xAF50B9FE82E42a7fCb9B7a31BC1DDB9dd02a661d63379890
BestFeed0x383C7Af1CA32f72f916a14bb03f95ec1D98A14E663379890
ControversialFeed0x6A94E5a83102b04c5965F8A756e2cB84c6B7170c63379890
AlgorithmRegistry0xeEC08F90CFe669e3366933cF1C72fe4f08A3F28963379890

Không hợp đồng nào có hàm admin. Kể cả đội phát triển cũng không gỡ được thuật toán, xoá bài hay ban tài khoản.

PostRegistry

Giữ bài viết, phiếu bầu và toàn bộ sổ karma.

solidity
uint256 public nextPostId = 1;
mapping(address => int256) public karmaOf;
mapping(uint256 => mapping(address => bool)) public hasLiked;
mapping(uint256 => mapping(address => bool)) public hasDisliked;

struct Post {
    address author;
    uint48  createdAt;
    uint48  parentId;         // 0 = bài, khác 0 = bình luận
    uint32  likeCount;        // thô
    uint32  weightedLikes;    // có trọng số
    uint32  dislikeCount;     // thô
    uint32  weightedDislikes; // có trọng số
    uint32  repostCount;      // dự trữ
    uint32  replyCount;
}

function post(string text, string mediaURI) external;
function reply(uint48 parentId, string text, string mediaURI) external;
function postOf(uint256 id) external view returns (Post memory);
function postsOf(uint256[] ids) external view returns (Post[] memory);

function like(uint256 id) external;
function dislike(uint256 id) external;
function unlike(uint256 id) external;
function undislike(uint256 id) external;

function karmaOf(address) external view returns (int256);   // 100 điểm = 1 phiếu
function weightOf(address) external view returns (uint32);  // 0–200

Sự kiện: PostCreated, Liked(id, account, weight), Unliked, Disliked(id, account, weight), Undisliked.

Quy tắc: không vote bài của chính mình; rút phiếu trả lại đúng trọng số đã cộng; karma âm thì trọng số bằng 0. Xem Karma và trọng số.

IdentityRegistry

Tên và metadata, không gì khác.

solidity
function register(bytes32 handle, string metadataURI) external;
function changeHandle(bytes32 newHandle) external;   // trả lại tên cũ
function setMetadata(string metadataURI) external;

Sự kiện: Registered, HandleChanged, MetadataUpdated. Handle là bytes32, 3–21 ký tự a–z0–9_. Đổi tên giải phóng tên cũ trong cùng một giao dịch.

CommunityRegistry

Cộng đồng là một nhãn công khai; hợp đồng không thể xoá bài, ban tài khoản hay chuyển tên.

solidity
function create(bytes32 name, string metadataURI) external;
function join(bytes32 name) external;
function leave(bytes32 name) external;
function setMetadata(bytes32 name, string metadataURI) external; // chỉ creator
function isValidName(bytes32 name) public pure returns (bool);

Sự kiện: Created, Joined, Left, MetadataUpdated. join/leave idempotent; tạo cộng đồng không tự tham gia. Xem Cộng đồng.

AlgorithmRegistry

Danh sách thuật toán và slot mặc định.

solidity
uint8 public constant SLOT_FEED = 0;
uint8 public constant SLOT_EXPLORE = 1;

function register(IFeedAlgorithm algo) external returns (uint256 id);
function algorithmAt(uint256 id) external view returns (address);
function algorithmCount() external view returns (uint256);
function setMyAlgorithm(uint8 slot, uint256 algorithmId) external;
function algorithmOf(address user, uint8 slot) external view returns (address);

Sự kiện: AlgorithmRegistered, AlgorithmSelected. register không cần quyền. Xem Thuật toán.

Tài liệu cho Monad testnet. Nội dung mô tả đúng những gì đang chạy.