Skip to main content

Client

Clients can interact with the abstractaccount module through:

CLI

The command-line interface provides both query and transaction commands for the abstractaccount module.

Query Commands

Query Params

Get the current abstractaccount module parameters:

d q abstractaccount params

Example Output:

params:
# module parameters

Query Actor Address

Get the contract address associated with a specific actor role:

d q abstractaccount actor <actor-name>

Example:

d q abstractaccount actor validator

Example Output:

address: dchain1...

Query Authenticator Address

Get the contract address associated with a specific authenticator role:

d q abstractaccount authenticator <authenticator-name>

Example:

d q abstractaccount authenticator default

Example Output:

address: dchain1...

Query Supported Proxies

Get the list of supported proxy code IDs:

d q abstractaccount supported-proxies

Example Output:

proxies:
- 1
- 2
- 3

Transaction Commands

Register Account

Register a new abstract account:

d tx abstractaccount register-account <code-id> <instantiate-msg-json> \
--from=<key> \
--salt=<salt> \
--amount=<funds>

Example:

d tx abstractaccount register-account 1 '{"owner":"dchain1..."}' \
--from=alice \
--salt="mysalt" \
--amount=1000udt

Parameters:

  • code-id: The CosmWasm code ID of the proxy contract
  • instantiate-msg-json: JSON-encoded instantiation message
  • --from: The sender's key name
  • --salt: (Optional) Salt for predictable address derivation
  • --amount: (Optional) Funds to send to the contract on instantiation

Update Params (via Governance)

Update module parameters through a governance proposal:

d tx gov submit-proposal /path/to/proposal.json --from=<key>

Where proposal.json contains:

{
"messages": [
{
"@type": "/d.abstractaccount.v1.MsgUpdateParams",
"sender": "dchain10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn",
"params": {
// updated params
}
}
],
"metadata": "ipfs://CID",
"deposit": "10000000udt",
"title": "Update AbstractAccount Params",
"summary": "Update abstractaccount module parameters"
}

Update Actor (via Governance)

Update an actor address through a governance proposal:

d tx gov submit-proposal /path/to/proposal.json --from=<key>

Where proposal.json contains:

{
"messages": [
{
"@type": "/d.abstractaccount.v1.MsgUpdateActor",
"sender": "dchain10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn",
"actor": "validator",
"address": "dchain1..."
}
],
"metadata": "ipfs://CID",
"deposit": "10000000udt",
"title": "Update Validator Actor",
"summary": "Update the validator actor address"
}

Update Authenticator (via Governance)

Update an authenticator address through a governance proposal:

d tx gov submit-proposal /path/to/proposal.json --from=<key>

Where proposal.json contains:

{
"messages": [
{
"@type": "/d.abstractaccount.v1.MsgUpdateAuthenticator",
"sender": "dchain10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn",
"authenticator": "default",
"address": "dchain1..."
}
],
"metadata": "ipfs://CID",
"deposit": "10000000udt",
"title": "Update Default Authenticator",
"summary": "Update the default authenticator address"
}

Update Supported Proxies (via Governance)

Update the set of supported proxies through a governance proposal:

d tx gov submit-proposal /path/to/proposal.json --from=<key>

Where proposal.json contains:

{
"messages": [
{
"@type": "/d.abstractaccount.v1.MsgUpdateSupportedProxies",
"sender": "dchain10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn",
"proxies": {
"1": true,
"2": true,
"3": false
}
}
],
"metadata": "ipfs://CID",
"deposit": "10000000udt",
"title": "Update Supported Proxies",
"summary": "Add proxies 1 and 2, remove proxy 3"
}

gRPC

Query Service

The abstractaccount module provides a gRPC query service defined in d/abstractaccount/v1/query.proto.

Params

Get module parameters:

grpcurl -plaintext localhost:9090 d.abstractaccount.v1.Query/Params

Request:

message QueryParamsRequest {}

Response:

message QueryParamsResponse {
Params params = 1;
}

ActorAddress

Get the address associated with an actor role:

grpcurl -plaintext -d '{"actor": "validator"}' \
localhost:9090 d.abstractaccount.v1.Query/ActorAddress

Request:

message QueryActorAddressRequest {
string actor = 1;
}

Response:

message QueryActorAddressResponse {
string address = 1;
}

AuthenticatorAddress

Get the address associated with an authenticator role:

grpcurl -plaintext -d '{"authenticator": "default"}' \
localhost:9090 d.abstractaccount.v1.Query/AuthenticatorAddress

Request:

message QueryAuthenticatorAddressRequest {
string authenticator = 1;
}

Response:

message QueryAuthenticatorAddressResponse {
string address = 1;
}

SupportedProxies

Get the list of supported proxy code IDs:

grpcurl -plaintext localhost:9090 d.abstractaccount.v1.Query/SupportedProxies

Request:

message QuerySupportedProxiesRequest {}

Response:

message QuerySupportedProxiesResponse {
repeated uint64 proxies = 1;
}

REST

Query Endpoints

REST endpoints are available via the gRPC-gateway.

GET /d/abstractaccount/v1/params

Get the current abstractaccount module parameters.

Example:

curl http://localhost:1317/d/abstractaccount/v1/params

Response:

{
"params": {
// module parameters
}
}

GET /d/abstractaccount/v1/actor/(actor)

Get the address associated with a specific actor role.

Example:

curl http://localhost:1317/d/abstractaccount/v1/actor/plugin

Response:

{
"address": "dchain1..."
}

GET /d/abstractaccount/v1/authenticator/(authenticator)

Get the address associated with a specific authenticator role.

Example:

curl http://localhost:1317/d/abstractaccount/v1/authenticator/webauthn

Response:

{
"address": "dchain1..."
}

GET /d/abstractaccount/v1/supported_proxies

Get the list of supported proxy code IDs.

Example:

curl http://localhost:1317/d/abstractaccount/v1/supported_proxies

Response:

{
"proxies": [1, 2, 3]
}

Common Use Cases

1. Register a New Abstract Account

# First, check supported proxy code IDs
d q abstractaccount supported-proxies

# Register account with a supported proxy
d tx abstractaccount register-account 1 '{"owner":"dchain1..."}' \
--from=alice \
--salt="unique-salt-value"

2. Check Actor Configuration

# Query all actor addresses
d q abstractaccount actor validator
d q abstractaccount actor operator

3. Monitor Account Registrations

# Query recent account registration events
d q txs --events 'd.abstractaccount.v1.EventAccountRegistered.code_id=1'

4. Propose Adding New Proxy Support

# Create governance proposal to add new proxy code ID
d tx gov submit-proposal add-proxy-proposal.json --from=proposer