A command is the core building block of The Simulacra. A command is similar to a traditional blockchain transaction. A command is structured with some consistent fields.
A command is structured:
structCommand {bytes32 id; // Identifier from the sourceuint256 chainId; // chainId, if blank can be executed on any chainuint256 nonce; // nonce to enable cancellation of commandsuint256 value; // amount of NATIVE// wallet infobytes32 ownerId; // command owner's identifierbytes32 namespace; // namespace of the wallet (used for source)uint16 walletIndex; // defaults to 0// command definitionbytes32 metaprotocol;bytes32[] modifiers; // additional command indicators Reference[] references; // additional information about a referenced entitystring[] args; Field[] kwargs;// additional datauint64 timestamp; // timestamp with msuint256 gas;uint256 bribe; // bribe for priority in mempoolbytes32hash; // maybe we don't need this// validate the execution CommandStatus status;uint256 gasUsed;}enumCommandStatus { PENDING, SUCCESS, FAILURE, CANCELLED}structField {bytes32 key;string value;}structReference {bytes32 source; // This simplifies handling of the referencebytes32 identifier; // globally unique identifier}