| name | deploy |
| description | Deploy an actor (smart contract) to the Convex network. Use when the user wants to create a new on-chain actor with exported functions. |
| argument-hint | <description-of-actor> |
Deploy a Convex Actor
Actors are autonomous on-chain programs with their own address, state, and exported functions.
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
deploy returns the new actor's address (e.g. #12345)
- Only functions tagged with
^:callable metadata can be called from outside (there is no export form). The equivalent map form is ^{:callable true}
- Use
set! to update an existing def from inside a function; plain defs 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
After Deployment
- Note the returned address for the user
- Optionally register a CNS name:
(call #9 (cns-update 'my.actor.name *address*))
- Test by calling a
^:callable function: (call #NEW-ADDR (get-count))
Workflow
- Help the user design the actor based on
$ARGUMENTS
- Write the Convex Lisp source
- Deploy using
transact with the (deploy ...) expression
- Verify the deployment with a test query