Skip to content

Commit be79e14

Browse files
Markuu-sElestrias
andauthored
Wallet api (#616)
* ApiWalletAddBalance Signed-off-by: elestrias <[email protected]> * WalletDelete Signed-off-by: elestrias <[email protected]> * WalletList. Signed-off-by: Markuu-s <[email protected]> * Update api. Signed-off-by: Markuu-s <[email protected]> Co-authored-by: elestrias <[email protected]>
1 parent 8096192 commit be79e14

File tree

4 files changed

+49
-0
lines changed

4 files changed

+49
-0
lines changed

core/api/full_node/make.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,26 @@ namespace fc::api {
747747
}));
748748
return map;
749749
};
750+
api->MarketAddBalance =
751+
[=](auto &address, auto &wallet, auto &amount) -> outcome::result<CID> {
752+
OUTCOME_TRY(
753+
encoded_params,
754+
codec::cbor::encode(
755+
vm::actor::builtin::v0::market::AddBalance::Params{address}));
756+
OUTCOME_TRY(signed_message,
757+
api->MpoolPushMessage(
758+
vm::message::UnsignedMessage(
759+
kStorageMarketAddress,
760+
wallet,
761+
0,
762+
amount,
763+
0,
764+
0,
765+
vm::actor::builtin::v0::market::AddBalance::Number,
766+
encoded_params),
767+
api::kPushNoSpec));
768+
return signed_message.getCid();
769+
};
750770
api->StateLookupID = [=](auto &address,
751771
auto &tipset_key) -> outcome::result<Address> {
752772
OUTCOME_TRY(context, tipsetContext(tipset_key, false));

core/api/full_node/node_api.hpp

+7
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,12 @@ namespace fc::api {
624624
jwt::kReadPermission,
625625
MarketDealMap,
626626
const TipsetKey &)
627+
API_METHOD(MarketAddBalance,
628+
jwt::kSignPermission,
629+
CID,
630+
const Address &,
631+
const Address &,
632+
const TokenAmount &)
627633
API_METHOD(StateLookupID,
628634
jwt::kReadPermission,
629635
Address,
@@ -817,6 +823,7 @@ namespace fc::api {
817823
f(a.GasEstimateGasPremium);
818824
f(a.GasEstimateMessageGas);
819825
f(a.MarketReserveFunds);
826+
f(a.MarketAddBalance);
820827
f(a.MinerCreateBlock);
821828
f(a.MinerGetBaseInfo);
822829
f(a.MpoolPending);

core/api/wallet/local_wallet.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "common/error_text.hpp"
99
#include "crypto/bls/impl/bls_provider_impl.hpp"
1010
#include "crypto/secp256k1/impl/secp256k1_provider_impl.hpp"
11+
#include "primitives/address/address_codec.hpp"
1112

1213
namespace fc::api {
1314

@@ -65,6 +66,13 @@ namespace fc::api {
6566
}
6667
return std::move(address);
6768
}};
69+
api->WalletList = [=]() -> outcome::result<std::vector<Address>> {
70+
OUTCOME_TRY(addresses, key_store->list());
71+
std::sort(addresses.begin(), addresses.end());
72+
auto last = std::unique(addresses.begin(), addresses.end());
73+
addresses.erase(last, addresses.end());
74+
return addresses;
75+
};
6876
api->WalletSetDefault = [=](auto &address) -> outcome::result<void> {
6977
wallet_default_address->setCbor(address);
7078
return outcome::success();
@@ -85,6 +93,14 @@ namespace fc::api {
8593
}
8694
return key_store->verify(address, data, signature);
8795
};
96+
api->WalletDelete = [=](auto &address) -> outcome::result<void> {
97+
OUTCOME_TRY(has, key_store->has(address));
98+
if (has) {
99+
OUTCOME_TRY(key_store->remove(address));
100+
return outcome::success();
101+
}
102+
return ERROR_TEXT("WalletDelete: Address does not exist");
103+
};
88104
}
89105

90106
} // namespace fc::api

core/api/wallet/wallet_api.hpp

+6
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ namespace fc::api {
3838

3939
API_METHOD(WalletSetDefault, jwt::kWritePermission, void, const Address &)
4040

41+
API_METHOD(WalletList, jwt::kAdminPermission, std::vector<Address>)
42+
43+
API_METHOD(WalletDelete, jwt::kAdminPermission, void, const Address &)
44+
4145
API_METHOD(WalletSign,
4246
jwt::kSignPermission,
4347
Signature,
@@ -59,6 +63,8 @@ namespace fc::api {
5963
f(a.WalletDefaultAddress);
6064
f(a.WalletHas);
6165
f(a.WalletImport);
66+
f(a.WalletList);
67+
f(a.WalletDelete);
6268
f(a.WalletNew);
6369
f(a.WalletSetDefault);
6470
f(a.WalletSign);

0 commit comments

Comments
 (0)