Bài viết
Chia sẻ kiến thức của bạn.

Cách tích hợp khung front-end Vue vào hệ sinh thái sui
Tôi hiện đang làm việc trên một quá trình chuyển đổi của một dự án front-end cũ. Dự án cũ sử dụng Vue làm framework front-end. Cách kết nối với ví của hệ sinh thái Sui luôn là vấn đề đau đầu đối với tôi. Trong quá trình phát triển trước đây, nếu tôi sử dụng framework react, tôi có thể dễ dàng sử dụng khung chính thức @mysten /dapp-kit để xây dựng một tập hợp hoàn chỉnh các kết nối ví, bắt đầu giao dịch và các phương thức ký tên.
Trong số các phương pháp được cung cấp bởi mysten labs, có @mysten/wallet-standard
thư viện này, @mysten/suican
được sử dụng để xây dựng các phương thức tương ứng cho kết nối ví và giao dịch chữ ký.
Quá trình kết nối với ví như sau:
Xác định xem người dùng đã kết nối với ví chưa:
initWallet() {
const connectedWallet = window.localStorage.getItem("connectedWallet")
const connectedAddress = window.localStorage.getItem("connectedAddress")
if (connectedWallet && this.supportWallets.includes(connectedWallet) && connectedAddress) {
this.connectWallet(connectedWallet)
}
}
Kết nối ví của bạn
// Connect Wallet (e.g., Slush)
async connectWallet(walletName) {
try {
const availableWallets = getWallets().get();
let wallet = availableWallets.find(e => e.name === walletName);
await wallet.features['standard:connect'].connect();
if (wallet.accounts.length > 0) {
// Usually the first account is the currently active address
const address = wallet.accounts[0].address;
this.connectedWallet = wallet.name;
this.address = address;
window.localStorage.setItem("connectedAddress", address);
window.localStorage.setItem("connectedWallet", wallet.name);
}
// Listen for wallet address changes or disconnection
wallet.features['standard:events'].on('change', (event) => {
// Logic for when the current wallet address doesn't match the stored address or when disconnected
if (event.accounts.length === 0 || event.accounts[0].address !== this.address) {
console.log('User changed accounts or disconnected...');
setTimeout(() => {
window.localStorage.removeItem("connectedAddress");
window.localStorage.removeItem("connectedWallet");
window.location.reload();
}, 1000);
}
});
} catch (error) {
console.log(error);
}
}
Sau đây là hoạt động chuyển nhượng. Tất cả các giao dịch có thể là wallet.features ['sui:signTransaction'] .signTransactionSigned:
async transferSui() {
try {
const wallet = getWallets().get().find(e => e.name === this.connectedWallet)
const amount = this.amount
const toAddress = this.toAddress
const tx = new Transaction()
const [coin] = tx.splitCoins(tx.gas, [amount * 1e9])
tx.transferObjects([coin], toAddress)
const { bytes, signature } = await wallet.features['sui:signTransaction'].signTransaction({
transaction: tx,
account: wallet.accounts[0],
chain: `sui:${import.meta.env.VITE_SUPPORT_NETWORK}`
});
const executeRes = await suiClient.executeTransactionBlock({
transactionBlock: bytes,
signature: signature,
options: {
showEffects: true,
showObjectChanges: true,
showBalanceChanges: true,
showEvents: true,
showInput: true
}
});
this.hash = executeRes.digest
} catch (error) {
console.log(error);
}
}
Cuối cùng, bạn có thể tạo một chức năng để ngắt kết nối ví trên web:
async disconnectWallet() {
try {
const availableWallets = getWallets().get();
const walletName = window.localStorage.getItem("connectedWallet")
let wallet = availableWallets.find(e => e.name === walletName)
await wallet.features['standard:disconnect'].disconnect();
window.localStorage.removeItem("connectedAddress")
window.localStorage.removeItem("connectedWallet")
window.location.reload()
} catch (error) {
console.log('meet some errors ');
}
},
- Sui
- SDKs and Developer Tools
Còn những người khác thì sao?
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.
- Tại sao BCS yêu cầu thứ tự trường chính xác để khử chuỗi khi cấu trúc Move có các trường được đặt tên?53
- Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động42
- Giao dịch Sui thất bại: Đối tượng được dành riêng cho giao dịch khác24
- Làm thế nào để các ràng buộc về khả năng tương tác với các trường động trong các bộ sưu tập không đồng nhất?04