Skip to main content

State

type State<A>: {
"fetch": Promise<undefined | A>;
"fromAppState": A;
"get": A;
"getAndRequireEquals": A;
"requireEquals": void;
"requireEqualsIf": void;
"requireNothing": void;
"set": void;
};

Gettable and settable state that can be checked for equality.

Type parameters​

• A

Type declaration​

fetch()​

Asynchronously fetch the on-chain state. This is intended for getting the state outside a smart contract.

Returns​

Promise\<undefined | A>

fromAppState()​

Get the state from the raw list of field elements on a zkApp account, for example:

let myContract = new MyContract(address);
let account = Mina.getAccount(address);

let x = myContract.x.fromAppState(account.zkapp!.appState);

Parameters​

• appState: Field[]

Returns​

A

get()​

Get the current on-chain state.

Caution: If you use this method alone inside a smart contract, it does not prove that your contract uses the current on-chain state. To successfully prove that your contract uses the current on-chain state, you must add an additional .requireEquals() statement or use .getAndRequireEquals():

let x = this.x.get();
this.x.requireEquals(x);

OR

let x = this.x.getAndRequireEquals();

Returns​

A

getAndRequireEquals()​

Get the current on-chain state and prove it really has to equal the on-chain state, by adding a precondition which the verifying Mina node will check before accepting this transaction.

Returns​

A

requireEquals()​

Prove that the on-chain state has to equal the given state, by adding a precondition which the verifying Mina node will check before accepting this transaction.

Parameters​

• a: A

Returns​

void

requireEqualsIf()​

Require that the on-chain state has to equal the given state if the provided condition is true.

If the condition is false, this is a no-op. If the condition is true, this adds a precondition that the verifying Mina node will check before accepting this transaction.

Parameters​

• condition: Bool

• a: A

Returns​

void

requireNothing()​

DANGER ZONE: Override the error message that warns you when you use .get() without adding a precondition.

Returns​

void

set()​

Set the on-chain state to a new value.

Parameters​

• a: A

Returns​

void

Source​

lib/mina/state.ts:91