deploy
by convex-dev
Deploy an actor (smart contract) to the Convex network. Use when the user wants to create a new on-chain actor with exported functions.
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 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
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
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
^: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