Skip to content

Commit 1a678ad

Browse files
authored
feat: Use any activated account (#172)
We want to use Gno Native Kit as a service where multiple clients are interacting with it simultaneously. Therefore we want to move away from the statefulness of the "active account", and instead require the client to specify the address of the account to use on each call. This PR adds this functionality but still supports the "active account". (We will remove "active account" when dSocial and Gnokey Mobile are changed to use the new API). This PR has four commits: 1. Many API methods such as `HasKeyByName` only need to interact with the Keybase (not the RPC connection or signing). In `gnoNativeService`, add the field `keybase` and use this where possible instead of `getSigner().Keybase`. This is helpful because we will change `getSigner`. 2. The `userAccount` struct currently holds the `password`. We change this to hold the `signer` (which has the password inside). In `gnoNativeService`, we also save the `chainID` separately. When `SelectAccountRequest` creates a new `userAccount`, create a new signer including the `chainID`. Change `getSigner` to take an account address and use this to look up the signer in `s.userAccounts`. For temporary backwards comptability, if the address is nil then use the active account. 4. In `gnoNativeService`, change the gnomobile `client` field to only hold the `rpcClient`. Change `getClient` to take an optional `signer` and to return a new `gnoclient.Client` with the `signer` and the `rpcClient`. In `Call`, `Send` and `Run`, use `getSigner` to use the `CallerAddress` if available (instead of the "active account"). 5. Add API methods `ActivateAccount` and `GetActivatedAccount`. Deprecate `SelectAccount` and `GetActiveAccount`. See rpc.proto for details. In gnonativetypes.go, add an `Address` field to `SetPasswordRequest`, `UpdatePasswordRequest` and `SignTxRequest`. Use this address in `getSigner`. Update the interface for `GnoNativeService.ClientSignTx` to take the address. (Due to circular dependencies with gnokey-mobile, this PR doesn't update the expo module. We'll do another PR.) --------- Signed-off-by: Jeff Thompson <[email protected]>
1 parent 2281464 commit 1a678ad

18 files changed

+3148
-1140
lines changed

api/gen/csharp/Gnonativetypes.cs

+1,250-226
Large diffs are not rendered by default.

api/gen/csharp/Rpc.cs

+56-50
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static RpcReflection() {
4545
"ARIZChRFcnJUb29NYW55U2lnbmF0dXJlcxDWARIUCg9FcnJOb1NpZ25hdHVy",
4646
"ZXMQ1wESEwoORXJyR2FzT3ZlcmZsb3cQ2AESFgoRRXJySW52YWxpZFBrZ1Bh",
4747
"dGgQ2QESEwoORXJySW52YWxpZFN0bXQQ2gESEwoORXJySW52YWxpZEV4cHIQ",
48-
"2wEy1BwKEEdub05hdGl2ZVNlcnZpY2USXgoJU2V0UmVtb3RlEicubGFuZC5n",
48+
"2wEyxB4KEEdub05hdGl2ZVNlcnZpY2USXgoJU2V0UmVtb3RlEicubGFuZC5n",
4949
"bm8uZ25vbmF0aXZlLnYxLlNldFJlbW90ZVJlcXVlc3QaKC5sYW5kLmduby5n",
5050
"bm9uYXRpdmUudjEuU2V0UmVtb3RlUmVzcG9uc2USXgoJR2V0UmVtb3RlEicu",
5151
"bGFuZC5nbm8uZ25vbmF0aXZlLnYxLkdldFJlbW90ZVJlcXVlc3QaKC5sYW5k",
@@ -80,54 +80,60 @@ static RpcReflection() {
8080
"Y2NvdW50UmVxdWVzdBosLmxhbmQuZ25vLmdub25hdGl2ZS52MS5DcmVhdGVB",
8181
"Y2NvdW50UmVzcG9uc2USagoNU2VsZWN0QWNjb3VudBIrLmxhbmQuZ25vLmdu",
8282
"b25hdGl2ZS52MS5TZWxlY3RBY2NvdW50UmVxdWVzdBosLmxhbmQuZ25vLmdu",
83-
"b25hdGl2ZS52MS5TZWxlY3RBY2NvdW50UmVzcG9uc2USZAoLU2V0UGFzc3dv",
84-
"cmQSKS5sYW5kLmduby5nbm9uYXRpdmUudjEuU2V0UGFzc3dvcmRSZXF1ZXN0",
85-
"GioubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlNldFBhc3N3b3JkUmVzcG9uc2US",
86-
"bQoOVXBkYXRlUGFzc3dvcmQSLC5sYW5kLmduby5nbm9uYXRpdmUudjEuVXBk",
87-
"YXRlUGFzc3dvcmRSZXF1ZXN0Gi0ubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlVw",
88-
"ZGF0ZVBhc3N3b3JkUmVzcG9uc2UScwoQR2V0QWN0aXZlQWNjb3VudBIuLmxh",
89-
"bmQuZ25vLmdub25hdGl2ZS52MS5HZXRBY3RpdmVBY2NvdW50UmVxdWVzdBov",
90-
"LmxhbmQuZ25vLmdub25hdGl2ZS52MS5HZXRBY3RpdmVBY2NvdW50UmVzcG9u",
91-
"c2USZwoMUXVlcnlBY2NvdW50EioubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlF1",
92-
"ZXJ5QWNjb3VudFJlcXVlc3QaKy5sYW5kLmduby5nbm9uYXRpdmUudjEuUXVl",
93-
"cnlBY2NvdW50UmVzcG9uc2USagoNRGVsZXRlQWNjb3VudBIrLmxhbmQuZ25v",
94-
"Lmdub25hdGl2ZS52MS5EZWxldGVBY2NvdW50UmVxdWVzdBosLmxhbmQuZ25v",
95-
"Lmdub25hdGl2ZS52MS5EZWxldGVBY2NvdW50UmVzcG9uc2USUgoFUXVlcnkS",
96-
"Iy5sYW5kLmduby5nbm9uYXRpdmUudjEuUXVlcnlSZXF1ZXN0GiQubGFuZC5n",
97-
"bm8uZ25vbmF0aXZlLnYxLlF1ZXJ5UmVzcG9uc2USVQoGUmVuZGVyEiQubGFu",
98-
"ZC5nbm8uZ25vbmF0aXZlLnYxLlJlbmRlclJlcXVlc3QaJS5sYW5kLmduby5n",
99-
"bm9uYXRpdmUudjEuUmVuZGVyUmVzcG9uc2USUgoFUUV2YWwSIy5sYW5kLmdu",
100-
"by5nbm9uYXRpdmUudjEuUUV2YWxSZXF1ZXN0GiQubGFuZC5nbm8uZ25vbmF0",
101-
"aXZlLnYxLlFFdmFsUmVzcG9uc2USUQoEQ2FsbBIiLmxhbmQuZ25vLmdub25h",
102-
"dGl2ZS52MS5DYWxsUmVxdWVzdBojLmxhbmQuZ25vLmdub25hdGl2ZS52MS5D",
103-
"YWxsUmVzcG9uc2UwARJRCgRTZW5kEiIubGFuZC5nbm8uZ25vbmF0aXZlLnYx",
104-
"LlNlbmRSZXF1ZXN0GiMubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlNlbmRSZXNw",
105-
"b25zZTABEk4KA1J1bhIhLmxhbmQuZ25vLmdub25hdGl2ZS52MS5SdW5SZXF1",
106-
"ZXN0GiIubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlJ1blJlc3BvbnNlMAESVwoK",
107-
"TWFrZUNhbGxUeBIiLmxhbmQuZ25vLmdub25hdGl2ZS52MS5DYWxsUmVxdWVz",
108-
"dBolLmxhbmQuZ25vLmdub25hdGl2ZS52MS5NYWtlVHhSZXNwb25zZRJXCgpN",
109-
"YWtlU2VuZFR4EiIubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlNlbmRSZXF1ZXN0",
110-
"GiUubGFuZC5nbm8uZ25vbmF0aXZlLnYxLk1ha2VUeFJlc3BvbnNlElUKCU1h",
111-
"a2VSdW5UeBIhLmxhbmQuZ25vLmdub25hdGl2ZS52MS5SdW5SZXF1ZXN0GiUu",
112-
"bGFuZC5nbm8uZ25vbmF0aXZlLnYxLk1ha2VUeFJlc3BvbnNlElUKBlNpZ25U",
113-
"eBIkLmxhbmQuZ25vLmdub25hdGl2ZS52MS5TaWduVHhSZXF1ZXN0GiUubGFu",
114-
"ZC5nbm8uZ25vbmF0aXZlLnYxLlNpZ25UeFJlc3BvbnNlEngKEUJyb2FkY2Fz",
115-
"dFR4Q29tbWl0Ei8ubGFuZC5nbm8uZ25vbmF0aXZlLnYxLkJyb2FkY2FzdFR4",
116-
"Q29tbWl0UmVxdWVzdBowLmxhbmQuZ25vLmdub25hdGl2ZS52MS5Ccm9hZGNh",
117-
"c3RUeENvbW1pdFJlc3BvbnNlMAEScAoPQWRkcmVzc1RvQmVjaDMyEi0ubGFu",
118-
"ZC5nbm8uZ25vbmF0aXZlLnYxLkFkZHJlc3NUb0JlY2gzMlJlcXVlc3QaLi5s",
119-
"YW5kLmduby5nbm9uYXRpdmUudjEuQWRkcmVzc1RvQmVjaDMyUmVzcG9uc2US",
120-
"dgoRQWRkcmVzc0Zyb21CZWNoMzISLy5sYW5kLmduby5nbm9uYXRpdmUudjEu",
121-
"QWRkcmVzc0Zyb21CZWNoMzJSZXF1ZXN0GjAubGFuZC5nbm8uZ25vbmF0aXZl",
122-
"LnYxLkFkZHJlc3NGcm9tQmVjaDMyUmVzcG9uc2USfAoTQWRkcmVzc0Zyb21N",
123-
"bmVtb25pYxIxLmxhbmQuZ25vLmdub25hdGl2ZS52MS5BZGRyZXNzRnJvbU1u",
124-
"ZW1vbmljUmVxdWVzdBoyLmxhbmQuZ25vLmdub25hdGl2ZS52MS5BZGRyZXNz",
125-
"RnJvbU1uZW1vbmljUmVzcG9uc2USUgoFSGVsbG8SIy5sYW5kLmduby5nbm9u",
126-
"YXRpdmUudjEuSGVsbG9SZXF1ZXN0GiQubGFuZC5nbm8uZ25vbmF0aXZlLnYx",
127-
"LkhlbGxvUmVzcG9uc2USZgoLSGVsbG9TdHJlYW0SKS5sYW5kLmduby5nbm9u",
128-
"YXRpdmUudjEuSGVsbG9TdHJlYW1SZXF1ZXN0GioubGFuZC5nbm8uZ25vbmF0",
129-
"aXZlLnYxLkhlbGxvU3RyZWFtUmVzcG9uc2UwAUIvWidnaXRodWIuY29tL2du",
130-
"b2xhbmcvZ25vbmF0aXZlL2FwaS9nZW4vZ2+iAgNSVEdiBnByb3RvMw=="));
83+
"b25hdGl2ZS52MS5TZWxlY3RBY2NvdW50UmVzcG9uc2UScAoPQWN0aXZhdGVB",
84+
"Y2NvdW50Ei0ubGFuZC5nbm8uZ25vbmF0aXZlLnYxLkFjdGl2YXRlQWNjb3Vu",
85+
"dFJlcXVlc3QaLi5sYW5kLmduby5nbm9uYXRpdmUudjEuQWN0aXZhdGVBY2Nv",
86+
"dW50UmVzcG9uc2USZAoLU2V0UGFzc3dvcmQSKS5sYW5kLmduby5nbm9uYXRp",
87+
"dmUudjEuU2V0UGFzc3dvcmRSZXF1ZXN0GioubGFuZC5nbm8uZ25vbmF0aXZl",
88+
"LnYxLlNldFBhc3N3b3JkUmVzcG9uc2USbQoOVXBkYXRlUGFzc3dvcmQSLC5s",
89+
"YW5kLmduby5nbm9uYXRpdmUudjEuVXBkYXRlUGFzc3dvcmRSZXF1ZXN0Gi0u",
90+
"bGFuZC5nbm8uZ25vbmF0aXZlLnYxLlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2US",
91+
"cwoQR2V0QWN0aXZlQWNjb3VudBIuLmxhbmQuZ25vLmdub25hdGl2ZS52MS5H",
92+
"ZXRBY3RpdmVBY2NvdW50UmVxdWVzdBovLmxhbmQuZ25vLmdub25hdGl2ZS52",
93+
"MS5HZXRBY3RpdmVBY2NvdW50UmVzcG9uc2USfAoTR2V0QWN0aXZhdGVkQWNj",
94+
"b3VudBIxLmxhbmQuZ25vLmdub25hdGl2ZS52MS5HZXRBY3RpdmF0ZWRBY2Nv",
95+
"dW50UmVxdWVzdBoyLmxhbmQuZ25vLmdub25hdGl2ZS52MS5HZXRBY3RpdmF0",
96+
"ZWRBY2NvdW50UmVzcG9uc2USZwoMUXVlcnlBY2NvdW50EioubGFuZC5nbm8u",
97+
"Z25vbmF0aXZlLnYxLlF1ZXJ5QWNjb3VudFJlcXVlc3QaKy5sYW5kLmduby5n",
98+
"bm9uYXRpdmUudjEuUXVlcnlBY2NvdW50UmVzcG9uc2USagoNRGVsZXRlQWNj",
99+
"b3VudBIrLmxhbmQuZ25vLmdub25hdGl2ZS52MS5EZWxldGVBY2NvdW50UmVx",
100+
"dWVzdBosLmxhbmQuZ25vLmdub25hdGl2ZS52MS5EZWxldGVBY2NvdW50UmVz",
101+
"cG9uc2USUgoFUXVlcnkSIy5sYW5kLmduby5nbm9uYXRpdmUudjEuUXVlcnlS",
102+
"ZXF1ZXN0GiQubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlF1ZXJ5UmVzcG9uc2US",
103+
"VQoGUmVuZGVyEiQubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlJlbmRlclJlcXVl",
104+
"c3QaJS5sYW5kLmduby5nbm9uYXRpdmUudjEuUmVuZGVyUmVzcG9uc2USUgoF",
105+
"UUV2YWwSIy5sYW5kLmduby5nbm9uYXRpdmUudjEuUUV2YWxSZXF1ZXN0GiQu",
106+
"bGFuZC5nbm8uZ25vbmF0aXZlLnYxLlFFdmFsUmVzcG9uc2USUQoEQ2FsbBIi",
107+
"LmxhbmQuZ25vLmdub25hdGl2ZS52MS5DYWxsUmVxdWVzdBojLmxhbmQuZ25v",
108+
"Lmdub25hdGl2ZS52MS5DYWxsUmVzcG9uc2UwARJRCgRTZW5kEiIubGFuZC5n",
109+
"bm8uZ25vbmF0aXZlLnYxLlNlbmRSZXF1ZXN0GiMubGFuZC5nbm8uZ25vbmF0",
110+
"aXZlLnYxLlNlbmRSZXNwb25zZTABEk4KA1J1bhIhLmxhbmQuZ25vLmdub25h",
111+
"dGl2ZS52MS5SdW5SZXF1ZXN0GiIubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlJ1",
112+
"blJlc3BvbnNlMAESVwoKTWFrZUNhbGxUeBIiLmxhbmQuZ25vLmdub25hdGl2",
113+
"ZS52MS5DYWxsUmVxdWVzdBolLmxhbmQuZ25vLmdub25hdGl2ZS52MS5NYWtl",
114+
"VHhSZXNwb25zZRJXCgpNYWtlU2VuZFR4EiIubGFuZC5nbm8uZ25vbmF0aXZl",
115+
"LnYxLlNlbmRSZXF1ZXN0GiUubGFuZC5nbm8uZ25vbmF0aXZlLnYxLk1ha2VU",
116+
"eFJlc3BvbnNlElUKCU1ha2VSdW5UeBIhLmxhbmQuZ25vLmdub25hdGl2ZS52",
117+
"MS5SdW5SZXF1ZXN0GiUubGFuZC5nbm8uZ25vbmF0aXZlLnYxLk1ha2VUeFJl",
118+
"c3BvbnNlElUKBlNpZ25UeBIkLmxhbmQuZ25vLmdub25hdGl2ZS52MS5TaWdu",
119+
"VHhSZXF1ZXN0GiUubGFuZC5nbm8uZ25vbmF0aXZlLnYxLlNpZ25UeFJlc3Bv",
120+
"bnNlEngKEUJyb2FkY2FzdFR4Q29tbWl0Ei8ubGFuZC5nbm8uZ25vbmF0aXZl",
121+
"LnYxLkJyb2FkY2FzdFR4Q29tbWl0UmVxdWVzdBowLmxhbmQuZ25vLmdub25h",
122+
"dGl2ZS52MS5Ccm9hZGNhc3RUeENvbW1pdFJlc3BvbnNlMAEScAoPQWRkcmVz",
123+
"c1RvQmVjaDMyEi0ubGFuZC5nbm8uZ25vbmF0aXZlLnYxLkFkZHJlc3NUb0Jl",
124+
"Y2gzMlJlcXVlc3QaLi5sYW5kLmduby5nbm9uYXRpdmUudjEuQWRkcmVzc1Rv",
125+
"QmVjaDMyUmVzcG9uc2USdgoRQWRkcmVzc0Zyb21CZWNoMzISLy5sYW5kLmdu",
126+
"by5nbm9uYXRpdmUudjEuQWRkcmVzc0Zyb21CZWNoMzJSZXF1ZXN0GjAubGFu",
127+
"ZC5nbm8uZ25vbmF0aXZlLnYxLkFkZHJlc3NGcm9tQmVjaDMyUmVzcG9uc2US",
128+
"fAoTQWRkcmVzc0Zyb21NbmVtb25pYxIxLmxhbmQuZ25vLmdub25hdGl2ZS52",
129+
"MS5BZGRyZXNzRnJvbU1uZW1vbmljUmVxdWVzdBoyLmxhbmQuZ25vLmdub25h",
130+
"dGl2ZS52MS5BZGRyZXNzRnJvbU1uZW1vbmljUmVzcG9uc2USUgoFSGVsbG8S",
131+
"Iy5sYW5kLmduby5nbm9uYXRpdmUudjEuSGVsbG9SZXF1ZXN0GiQubGFuZC5n",
132+
"bm8uZ25vbmF0aXZlLnYxLkhlbGxvUmVzcG9uc2USZgoLSGVsbG9TdHJlYW0S",
133+
"KS5sYW5kLmduby5nbm9uYXRpdmUudjEuSGVsbG9TdHJlYW1SZXF1ZXN0Giou",
134+
"bGFuZC5nbm8uZ25vbmF0aXZlLnYxLkhlbGxvU3RyZWFtUmVzcG9uc2UwAUIv",
135+
"WidnaXRodWIuY29tL2dub2xhbmcvZ25vbmF0aXZlL2FwaS9nZW4vZ2+iAgNS",
136+
"VEdiBnByb3RvMw=="));
131137
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
132138
new pbr::FileDescriptor[] { global::Land.Gno.Gnonative.V1.GnonativetypesReflection.Descriptor, },
133139
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Land.Gno.Gnonative.V1.ErrCode), }, null, new pbr::GeneratedClrTypeInfo[] {
@@ -172,7 +178,7 @@ public enum ErrCode {
172178
/// </summary>
173179
[pbr::OriginalName("ErrCryptoKeyNotFound")] ErrCryptoKeyNotFound = 151,
174180
/// <summary>
175-
/// ErrNoActiveAccount indicates that no active account has been set with SelectAccount
181+
/// ErrNoActiveAccount indicates that no account with the given address has been activated with ActivateAccount
176182
/// </summary>
177183
[pbr::OriginalName("ErrNoActiveAccount")] ErrNoActiveAccount = 152,
178184
[pbr::OriginalName("ErrRunGRPCServer")] ErrRunGrpcserver = 153,

0 commit comments

Comments
 (0)