Skip to content

Commit 7e7ab00

Browse files
author
Mikhail Tagirov
authored
Actor methods (#671)
Signed-off-by: Mikhail Tagirov <[email protected]>
1 parent ff29739 commit 7e7ab00

File tree

66 files changed

+2160
-575
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2160
-575
lines changed

core/api/full_node/make.cpp

+23-31
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
#include "proofs/impl/proof_engine_impl.hpp"
2929
#include "storage/car/car.hpp"
3030
#include "storage/unixfs/unixfs.hpp"
31+
#include "vm/actor/builtin/methods/market.hpp"
3132
#include "vm/actor/builtin/states/miner/miner_actor_state.hpp"
3233
#include "vm/actor/builtin/types/market/deal.hpp"
3334
#include "vm/actor/builtin/types/market/policy.hpp"
3435
#include "vm/actor/builtin/types/storage_power/policy.hpp"
35-
#include "vm/actor/builtin/v0/market/market_actor.hpp"
3636
#include "vm/actor/builtin/v5/market/validate.hpp"
3737
#include "vm/actor/builtin/v5/miner/monies.hpp"
3838
#include "vm/message/impl/message_signer_impl.hpp"
@@ -74,6 +74,7 @@ namespace fc::api {
7474
using vm::state::StateTreeImpl;
7575
using vm::toolchain::Toolchain;
7676
using vm::version::getNetworkVersion;
77+
namespace market = vm::actor::builtin::market;
7778

7879
void beaconEntriesForBlock(const DrandSchedule &schedule,
7980
Beaconizer &beaconizer,
@@ -415,22 +416,16 @@ namespace fc::api {
415416
}
416417
// TODO(a.chernyshov): method should use fund manager batch reserve
417418
// and release funds requests for market actor.
418-
OUTCOME_TRY(
419-
encoded_params,
420-
codec::cbor::encode(
421-
vm::actor::builtin::v0::market::AddBalance::Params{address}));
422-
UnsignedMessage unsigned_message{
423-
kStorageMarketAddress,
424-
wallet,
425-
{},
426-
amount,
427-
0,
428-
0,
429-
// TODO (a.chernyshov) there is v0 actor method number, but the
430-
// actor methods do not depend on version. Should be changed to
431-
// general method number when methods number are made general
432-
vm::actor::builtin::v0::market::AddBalance::Number,
433-
encoded_params};
419+
OUTCOME_TRY(encoded_params,
420+
codec::cbor::encode(market::AddBalance::Params{address}));
421+
UnsignedMessage unsigned_message{kStorageMarketAddress,
422+
wallet,
423+
{},
424+
amount,
425+
0,
426+
0,
427+
market::AddBalance::Number,
428+
encoded_params};
434429
OUTCOME_TRY(signed_message,
435430
api->MpoolPushMessage(unsigned_message, api::kPushNoSpec));
436431
return signed_message.getCid();
@@ -755,21 +750,18 @@ namespace fc::api {
755750
};
756751
api->MarketAddBalance =
757752
[=](auto &address, auto &wallet, auto &amount) -> outcome::result<CID> {
758-
OUTCOME_TRY(
759-
encoded_params,
760-
codec::cbor::encode(
761-
vm::actor::builtin::v0::market::AddBalance::Params{address}));
753+
OUTCOME_TRY(encoded_params,
754+
codec::cbor::encode(market::AddBalance::Params{address}));
762755
OUTCOME_TRY(signed_message,
763756
api->MpoolPushMessage(
764-
vm::message::UnsignedMessage(
765-
kStorageMarketAddress,
766-
wallet,
767-
0,
768-
amount,
769-
0,
770-
0,
771-
vm::actor::builtin::v0::market::AddBalance::Number,
772-
encoded_params),
757+
vm::message::UnsignedMessage(kStorageMarketAddress,
758+
wallet,
759+
0,
760+
amount,
761+
0,
762+
0,
763+
market::AddBalance::Number,
764+
encoded_params),
773765
api::kPushNoSpec));
774766
return signed_message.getCid();
775767
};
@@ -1087,7 +1079,7 @@ namespace fc::api {
10871079

10881080
api->StateVerifiedClientStatus = [=](const Address &address,
10891081
const TipsetKey &tipset_key)
1090-
-> outcome::result<boost::optional<StoragePower>> {
1082+
-> outcome::result<boost::optional<DataCap>> {
10911083
OUTCOME_TRY(context, tipsetContext(tipset_key, true));
10921084
OUTCOME_TRY(id, context.state_tree.lookupId(address));
10931085
OUTCOME_TRY(state, context.verifiedRegistryState());

core/api/full_node/node_api.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ namespace fc::api {
4848
using markets::storage::client::import_manager::Import;
4949
using primitives::BigInt;
5050
using primitives::ChainEpoch;
51+
using primitives::DataCap;
5152
using primitives::DealId;
5253
using primitives::EpochDuration;
5354
using primitives::GasAmount;
@@ -765,7 +766,7 @@ namespace fc::api {
765766
*/
766767
API_METHOD(StateVerifiedClientStatus,
767768
jwt::kReadPermission,
768-
boost::optional<StoragePower>,
769+
boost::optional<DataCap>,
769770
const Address &,
770771
const TipsetKey &)
771772

core/cli/node/client.hpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323
#include "storage/ipld/memory_indexed_car.hpp"
2424
#include "storage/unixfs/unixfs.hpp"
2525
#include "vm/actor/actor.hpp"
26-
#include "vm/actor/builtin/states/verified_registry/verified_registry_actor_state.hpp"
2726
#include "vm/actor/builtin/types/market/policy.hpp"
28-
#include "vm/actor/builtin/v0/verified_registry/verified_registry_actor.hpp"
2927
#include "vm/state/impl/state_tree_impl.hpp"
3028

3129
namespace fc::cli::cli_node {
@@ -348,7 +346,7 @@ namespace fc::cli::cli_node {
348346
if (not boost::filesystem::exists(path_in)) {
349347
throw CliError("Input file does not exist.\n");
350348
}
351-
if (not boost::filesystem::is_regular_file(path_in)){
349+
if (not boost::filesystem::is_regular_file(path_in)) {
352350
throw CliError("Provided path does not leads to regular file.\n");
353351
}
354352

core/cli/node/filplus.hpp

+26-25
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
*/
55

66
#pragma once
7+
78
#include "api/full_node/node_api.hpp"
9+
#include "vm/actor/builtin/methods/verified_registry.hpp"
10+
#include "vm/actor/builtin/states/verified_registry/verified_registry_actor_state.hpp"
811

912
namespace fc::cli::cli_node {
1013
using api::MsgWait;
@@ -14,6 +17,7 @@ namespace fc::cli::cli_node {
1417
using vm::actor::kVerifiedRegistryAddress;
1518
using vm::actor::builtin::states::VerifiedRegistryActorStatePtr;
1619
using vm::message::SignedMessage;
20+
namespace verifreg = vm::actor::builtin::verifreg;
1721

1822
StoragePower checkNotary(const std::shared_ptr<FullNodeApi> &api,
1923
const Address &vaddr) {
@@ -62,18 +66,17 @@ namespace fc::cli::cli_node {
6266
allowance);
6367

6468
auto encoded_params = cliTry(codec::cbor::encode(
65-
vm::actor::builtin::v0::verified_registry::AddVerifiedClient::Params{
66-
target, allowance}));
67-
SignedMessage signed_message = cliTry(api->MpoolPushMessage(
68-
{kVerifiedRegistryAddress,
69-
*args.from,
70-
{},
71-
0,
72-
0,
73-
0,
74-
vm::actor::builtin::v0::verified_registry::AddVerifiedClient::Number,
75-
encoded_params},
76-
api::kPushNoSpec));
69+
verifreg::AddVerifiedClient::Params{target, allowance}));
70+
SignedMessage signed_message =
71+
cliTry(api->MpoolPushMessage({kVerifiedRegistryAddress,
72+
*args.from,
73+
{},
74+
0,
75+
0,
76+
0,
77+
verifreg::AddVerifiedClient::Number,
78+
encoded_params},
79+
api::kPushNoSpec));
7780

7881
fmt::print("message sent, now waiting on cid: {}\n",
7982
signed_message.getCid());
@@ -139,19 +142,17 @@ namespace fc::cli::cli_node {
139142
cliTry(getCbor<VerifiedRegistryActorStatePtr>(ipfs, actor.head));
140143

141144
auto encoded_params = cliTry(codec::cbor::encode(
142-
vm::actor::builtin::v0::verified_registry::AddVerifier::Params{
143-
*args.from, *args.amount
144-
}));
145-
const SignedMessage signed_message = cliTry(api->MpoolPushMessage(
146-
{kVerifiedRegistryAddress,
147-
state->root_key,
148-
{},
149-
0,
150-
0,
151-
0,
152-
vm::actor::builtin::v0::verified_registry::AddVerifier::Number,
153-
encoded_params},
154-
api::kPushNoSpec));
145+
verifreg::AddVerifier::Params{*args.from, *args.amount}));
146+
const SignedMessage signed_message =
147+
cliTry(api->MpoolPushMessage({kVerifiedRegistryAddress,
148+
state->root_key,
149+
{},
150+
0,
151+
0,
152+
0,
153+
verifreg::AddVerifier::Number,
154+
encoded_params},
155+
api::kPushNoSpec));
155156
const MsgWait message_wait =
156157
cliTry(api->StateWaitMsg(signed_message.getCid(), 1, 10, false),
157158
"Wait message");

core/common/smoothing/alpha_beta_filter.hpp

+8
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ namespace fc::common::smoothing {
2222
struct FilterEstimate {
2323
BigInt position;
2424
BigInt velocity;
25+
26+
inline bool operator==(const FilterEstimate &other) const {
27+
return position == other.position && velocity == other.velocity;
28+
}
29+
30+
inline bool operator!=(const FilterEstimate &other) const {
31+
return !(*this == other);
32+
}
2533
};
2634
CBOR_TUPLE(FilterEstimate, position, velocity)
2735

core/markets/storage/chain_events/impl/chain_events_impl.cpp

+30-30
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,20 @@
66
#include "markets/storage/chain_events/impl/chain_events_impl.hpp"
77
#include "common/outcome_fmt.hpp"
88
#include "storage/ipfs/api_ipfs_datastore/api_ipfs_datastore.hpp"
9+
#include "vm/actor/builtin/methods/miner.hpp"
910
#include "vm/actor/builtin/states/miner/miner_actor_state.hpp"
10-
#include "vm/actor/builtin/v7/miner/miner_actor.hpp"
11+
#include "vm/actor/builtin/types/miner/replica_update.hpp"
12+
#include "vm/actor/builtin/types/miner/sector_info.hpp"
1113

1214
namespace fc::markets::storage::chain_events {
1315
using primitives::RleBitset;
1416
using primitives::tipset::HeadChangeType;
1517
using vm::VMExitCode;
18+
using vm::actor::builtin::states::MinerActorStatePtr;
19+
using vm::actor::builtin::types::miner::ReplicaUpdate;
1620
using vm::actor::builtin::types::miner::SectorPreCommitInfo;
17-
using vm::actor::builtin::v5::miner::PreCommitBatch;
18-
using vm::actor::builtin::v5::miner::PreCommitSector;
19-
using vm::actor::builtin::v5::miner::ProveCommitAggregate;
20-
using vm::actor::builtin::v5::miner::ProveCommitSector;
21-
using vm::actor::builtin::v7::miner::ProveReplicaUpdates;
22-
using vm::actor::builtin::v7::miner::ReplicaUpdate;
2321
using vm::message::SignedMessage;
22+
namespace miner = vm::actor::builtin::miner;
2423

2524
ChainEventsImpl::ChainEventsImpl(std::shared_ptr<FullNodeApi> api,
2625
IsDealPrecommited is_deal_precommited)
@@ -36,9 +35,7 @@ namespace fc::markets::storage::chain_events {
3635
std::make_shared<fc::storage::ipfs::ApiIpfsDatastore>(api)};
3736
OUTCOME_TRY(network, api->StateNetworkVersion(tsk));
3837
ipld->actor_version = actorVersion(network);
39-
OUTCOME_TRY(state,
40-
getCbor<vm::actor::builtin::states::MinerActorStatePtr>(
41-
ipld, actor.head));
38+
OUTCOME_TRY(state, getCbor<MinerActorStatePtr>(ipld, actor.head));
4239
boost::optional<SectorNumber> result;
4340
constexpr auto kStop{std::errc::interrupted};
4441
const auto visit{state->precommitted_sectors.visit(
@@ -162,9 +159,10 @@ namespace fc::markets::storage::chain_events {
162159
return cb(r.receipt.exit_code);
163160
}
164161
if (update) {
165-
OUTCOME_CB(auto result,
166-
codec::cbor::decode<ProveReplicaUpdates::Result>(
167-
r.receipt.return_value));
162+
OUTCOME_CB(
163+
auto result,
164+
codec::cbor::decode<miner::ProveReplicaUpdates::Result>(
165+
r.receipt.return_value));
168166
if (!result.has(sector)) {
169167
return cb(ERROR_TEXT("ProveReplicaUpdates failed"));
170168
}
@@ -207,32 +205,34 @@ namespace fc::markets::storage::chain_events {
207205
const auto on_update{[&](const ReplicaUpdate &update) {
208206
on_deals(update.deals, update.sector, true);
209207
}};
210-
if (message.method == PreCommitSector::Number) {
211-
OUTCOME_TRY(param,
212-
codec::cbor::decode<PreCommitSector::Params>(message.params));
208+
if (message.method == miner::PreCommitSector::Number) {
209+
OUTCOME_TRY(
210+
param,
211+
codec::cbor::decode<miner::PreCommitSector::Params>(message.params));
213212
on_precommit(param);
214-
} else if (message.method == PreCommitBatch::Number) {
213+
} else if (message.method == miner::PreCommitSectorBatch::Number) {
215214
OUTCOME_TRY(param,
216-
codec::cbor::decode<PreCommitBatch::Params>(message.params));
215+
codec::cbor::decode<miner::PreCommitSectorBatch::Params>(
216+
message.params));
217217
for (const auto &precommit : param.sectors) {
218218
on_precommit(precommit);
219219
}
220-
} else if (message.method == ProveCommitSector::Number) {
221-
OUTCOME_TRY(
222-
param,
223-
codec::cbor::decode<ProveCommitSector::Params>(message.params));
220+
} else if (message.method == miner::ProveCommitSector::Number) {
221+
OUTCOME_TRY(param,
222+
codec::cbor::decode<miner::ProveCommitSector::Params>(
223+
message.params));
224224
on_commit(param.sector);
225-
} else if (message.method == ProveCommitAggregate::Number) {
226-
OUTCOME_TRY(
227-
param,
228-
codec::cbor::decode<ProveCommitAggregate::Params>(message.params));
225+
} else if (message.method == miner::ProveCommitAggregate::Number) {
226+
OUTCOME_TRY(param,
227+
codec::cbor::decode<miner::ProveCommitAggregate::Params>(
228+
message.params));
229229
for (const auto &sector : param.sectors) {
230230
on_commit(sector);
231231
}
232-
} else if (message.method == ProveReplicaUpdates::Number) {
233-
OUTCOME_TRY(
234-
param,
235-
codec::cbor::decode<ProveReplicaUpdates::Params>(message.params));
232+
} else if (message.method == miner::ProveReplicaUpdates::Number) {
233+
OUTCOME_TRY(param,
234+
codec::cbor::decode<miner::ProveReplicaUpdates::Params>(
235+
message.params));
236236
for (const auto &update : param.updates) {
237237
on_update(update);
238238
}

core/markets/storage/client/impl/storage_market_client_impl.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "markets/storage/client/import_manager/import_manager.hpp"
2020
#include "markets/storage/storage_datatransfer_voucher.hpp"
2121
#include "storage/ipld/memory_indexed_car.hpp"
22+
#include "vm/actor/builtin/methods/market.hpp"
2223
#include "vm/actor/builtin/types/market/publish_deals_result.hpp"
2324
#include "vm/message/message.hpp"
2425

@@ -58,9 +59,9 @@ namespace fc::markets::storage::client {
5859
using primitives::sector::RegisteredSealProof;
5960
using vm::VMExitCode;
6061
using vm::actor::kStorageMarketAddress;
61-
using vm::actor::builtin::v0::market::PublishStorageDeals;
6262
using vm::message::SignedMessage;
6363
using vm::message::UnsignedMessage;
64+
namespace market = vm::actor::builtin::market;
6465

6566
StorageMarketClientImpl::StorageMarketClientImpl(
6667
std::shared_ptr<Host> host,
@@ -422,14 +423,14 @@ namespace fc::markets::storage::client {
422423
deal->message = "Receiver is not storage market actor";
423424
return false;
424425
}
425-
if (publish_message.method != PublishStorageDeals::Number) {
426+
if (publish_message.method != market::PublishStorageDeals::Number) {
426427
deal->message = "Wrong method called";
427428
return false;
428429
}
429430

430431
// check publish contains proposal cid
431432
OUTCOME_TRY(params,
432-
codec::cbor::decode<PublishStorageDeals::Params>(
433+
codec::cbor::decode<market::PublishStorageDeals::Params>(
433434
publish_message.params));
434435
const auto &proposals{params.deals};
435436
const auto it = std::find(

0 commit comments

Comments
 (0)