ACW Soft Solutions

Smart contract development

Turn defined product rules into contract functions and state changes. Establish who can act, which conditions must hold, and how the contract is tested and approved for the intended deployment.

See the contract scopeContact Us

Resolve the rules that control transactions

Contract requirements need to cover expected actions, invalid inputs, unauthorized calls, and interactions with other components. A successful example alone does not establish how the system behaves outside that scenario.

Deployment also changes how corrections can be handled. Ethereum’s security guidance explains why deployed contract logic requires careful assessment and why testing alone cannot establish the absence of vulnerabilities.

Specify execution, permissions, and change behavior

  • Contract logic

    Define inputs, conditions, state transitions, and the result expected for each supported function.

  • Access control

    Identify who may call administrative and user functions, including how authority is transferred or removed. OpenZeppelin’s access-control documentation illustrates the distinction between ownership and role-based permissions.

  • Transaction flow

    Map the sequence of actions and related asset movements. Include unsuccessful calls and dependencies on external components.

  • Upgrade and recovery requirements

    Decide whether a pause or upgrade mechanism is required and supported by the architecture. Define its authority and limitations before implementation.

What the delivery includes

The agreed outputs can include a contract behavior specification, permission model, implemented code, test scenarios and results, and deployment instructions. Documentation identifies the configuration, administrative responsibilities, and known limitations relevant to operation.

Acceptance reviews the implemented behavior against the specified scenarios. It does not turn a reviewed contract into a guarantee against defects or exploitation.

Review the specification before deploying code

We clarify the rules and dependencies, review the proposed contract structure, and implement the selected scope. Tests examine the expected and rejected actions included in the requirements.

A release review records test findings, unresolved risks, required independent review, and deployment authority. Production keys and operation remain with the owners identified in the engagement.

Define the deployment and review boundaries

Specify the target network, contract interfaces, supported actions, test requirements, and release materials. Independent audits, formal verification, existing-contract remediation, and ongoing monitoring require explicit scope.

Illustrative example

Illustrative example: controlled issuance

A product requires tokens to be issued only by designated administrators and within a defined limit. The specification would state the permitted roles, issuance conditions, rejected actions, and authority-transfer process. Tests would examine those rules before the project’s deployment review.

Questions about contract development

Can a contract be changed after deployment?

That depends on its architecture. An upgrade or pause capability must be designed and governed explicitly; it should not be assumed to exist after launch.

Who controls administrative functions?

The permission model identifies the authorized accounts and how those responsibilities are managed. The client and implementation team agree this before deployment.

Does testing replace an independent audit?

No. They provide different forms of review. Any independent audit and the handling of its findings must be specified in the release plan.

Connect the contract to the rest of the product

Bring the rules the contract must enforce

Describe the actions, permissions, assets, and deployment constraints.