deploy
bởi convex-dev
Triển khai một actor (hợp đồng thông minh) lên mạng Convex. Sử dụng khi người dùng muốn tạo một actor mới trên chuỗi với các hàm đã được xuất.
npx skills add https://github.com/convex-dev/convex --skill deployDeploy a Convex Actor
Actors are autonomous on-chain programs with their own address, state, and callable functions.
See the convex-lisp skill for CVM conventions and error codes. Deploying is a
transaction, so it needs a key the user has supplied — see transact.
Actor Structure
A typical actor deployment:
(deploy
'(do
;; Internal state (private to the actor)
(def counter 0)
;; Callable functions: mark each with ^:callable so it can be
;; invoked from outside the actor via (call ...)
(defn ^:callable increment []
(set! counter (+ counter 1))
counter)
(defn ^:callable get-count []
counter)))
Key Rules
deployreturns the new actor's address (e.g.#12345)- Only functions tagged with
^:callablemetadata can be called from outside (there is noexportform). The equivalent map form is^{:callable true} - Use
set!to update an existingdeffrom inside a function; plaindefs declared in the actor body are private state - Actors have their own
*address*and*balance* - Use
(set-controller #ADDR)inside the actor to set who can upgrade it deployalso accepts a vector of code forms, which is how library builders are composed into one actor:(deploy [(@convex.fungible/build-token {…}) (@convex.fungible/add-mint {…})])
After Deployment
- Note the returned address for the user
- Optionally register a CNS name:
(*registry*/create 'my.actor.name #NEW-ADDR)— needs control of the parent namespace; see thecnsskill - Test by calling a
^:callablefunction:(call #NEW-ADDR (get-count))
Workflow
- Help the user design the actor based on
$ARGUMENTS - Write the Convex Lisp source
- Deploy using
transactwith the(deploy ...)expression - Verify the deployment with a test query