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 contractinstantiate-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