Zum Inhalt springen

Smart Contracts

Aptos-Verträge werden mit Move geschrieben, einer Sprache der nächsten Generation für sichere, sandboxed und formal verifizierte Programmierung, die für mehrere Chains verwendet wird. Move ermöglicht es Entwicklern, Programme zu schreiben, die flexibel Assets verwalten und übertragen, während sie Sicherheit und Schutz vor Angriffen auf diese Assets bieten.

Hier ist ein hello_blockchain-Beispiel von Move

hello_blockchain.move
module hello_blockchain::message {
use std::error;
use std::signer;
use std::string;
use aptos_framework::event;
//:!:>resource
struct MessageHolder has key {
message: string::String,
}
//<:!:resource
#[event]
struct MessageChange has drop, store {
account: address,
from_message: string::String,
to_message: string::String,
}
/// There is no message present
const ENO_MESSAGE: u64 = 0;
#[view]
public fun get_message(addr: address): string::String acquires MessageHolder {
assert!(exists<MessageHolder>(addr), error::not_found(ENO_MESSAGE));
borrow_global<MessageHolder>(addr).message
}
public entry fun set_message(account: signer, message: string::String)
acquires MessageHolder {
let account_addr = signer::address_of(&account);
if (!exists<MessageHolder>(account_addr)) {
move_to(&account, MessageHolder {
message,
})
} else {
let old_message_holder = borrow_global_mut<MessageHolder>(account_addr);
let from_message = old_message_holder.message;
event::emit(MessageChange {
account: account_addr,
from_message,
to_message: copy message,
});
old_message_holder.message = message;
}
}
#[test(account = @0x1)]
public entry fun sender_can_set_message(account: signer) acquires MessageHolder {
let addr = signer::address_of(&account);
aptos_framework::account::create_account_for_test(addr);
set_message(account, string::utf8(b"Hello, Blockchain"));
assert!(
get_message(addr) == string::utf8(b"Hello, Blockchain"),
ENO_MESSAGE
);
}
}

Wir haben einen neuen Move on Aptos-Compiler, der Move 2 unterstützt. Siehe diese Seite für weitere Informationen.