Flex
Flex exchange system
UserDataConfig.hpp
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include "FlexVersion.hpp"
12 #include "bind_info.hpp"
13 
14 #include <tvm/schema/message.hpp>
15 #include <tvm/smart_switcher.hpp>
16 #include <tvm/contract_handle.hpp>
17 
18 namespace tvm {
19 
22  address super_root;
23 };
24 
33 };
34 
40 __interface IUserDataConfig {
42  [[deploy, internal]]
43  void onDeploy(
44  bind_info binding,
45  cell flex_client_stub,
46  cell flex_client_code,
47  cell auth_index_code,
48  cell user_id_index_code
49  );
50 
52  [[internal, answer_id]]
53  address deployFlexClient(uint256 pubkey, uint128 deploy_evers, bytes signature);
54 
56  [[internal, answer_id]]
58 
60  [[getter]]
61  address getFlexClientAddr(uint256 pubkey);
62 
64  [[getter]]
66 
68  [[getter]]
70 };
71 using IUserDataConfigPtr = handle<IUserDataConfig>;
72 
76  opt<bind_info> binding_;
79  optcell auth_index_code_;
81 };
82 
85 __interface EUserDataConfig {
86 };
87 
89 template<>
90 struct preparer<IUserDataConfig, DUserDataConfig> {
91  __always_inline
92  static std::pair<StateInit, uint256> execute(DUserDataConfig data, cell code) {
93  cell data_cl = prepare_persistent_data<IUserDataConfig, void>({}, data);
94  StateInit init { {}, {}, code, data_cl, {} };
95  cell init_cl = build(init).make_cell();
96  return { init, uint256(tvm_hash(init_cl)) };
97  }
98 };
99 
100 } // namespace tvm
Flex version structure.
UserDataConfig persistent data struct.
Definition: UserDataConfig.hpp:74
optcell flex_client_code_
FlexClient code (no salt).
Definition: UserDataConfig.hpp:78
optcell auth_index_code_
AuthIndex code (no salt).
Definition: UserDataConfig.hpp:79
opt< bind_info > binding_
Exchange binding info (Flex address and PriceXchg code hash (unsalted)).
Definition: UserDataConfig.hpp:76
optcell user_id_index_code_
UserIdIndex code (unsalted).
Definition: UserDataConfig.hpp:80
optcell flex_client_stub_
FlexClientStub code (salted).
Definition: UserDataConfig.hpp:77
FlexVersion triplet_
Flex version triplet. Used for address calculation.
Definition: UserDataConfig.hpp:75
UserDataConfig events interface.
Definition: UserDataConfig.hpp:85
Flex version triplet.
Definition: FlexVersion.hpp:14
UserDataConfig contract interface.
Definition: UserDataConfig.hpp:40
UserDataConfigDetails getDetails()
Get info about contract state details.
void onDeploy(bind_info binding, cell flex_client_stub, cell flex_client_code, cell auth_index_code, cell user_id_index_code)
Deploy processing.
address getFlexClientAddr(uint256 pubkey)
Get FlexClient address.
UserDataConfigDetails requestDetails()
Request info about contract state details (internal call)
address deployFlexClient(uint256 pubkey, uint128 deploy_evers, bytes signature)
Deploy FlexClient, signature - FlexClientStub address.val (without workchain id), signed by owner of ...
UserDataConfigSalt getConfig()
Get config from code salt.
UserDataConfig details for getter.
Definition: UserDataConfig.hpp:26
FlexVersion triplet
Flex version triplet.
Definition: UserDataConfig.hpp:27
bind_info binding
Exchange binding info (Flex address and PriceXchg code hash (unsalted)).
Definition: UserDataConfig.hpp:28
cell user_id_index_code
UserIdIndex code (unsalted)
Definition: UserDataConfig.hpp:32
cell auth_index_code
AuthIndex code (no salt)
Definition: UserDataConfig.hpp:31
cell flex_client_stub
FlexClientStub code. TODO: We don't need it in requestDetails, maybe optimize?
Definition: UserDataConfig.hpp:29
cell flex_client_code
FlexClient code (no salt)
Definition: UserDataConfig.hpp:30
UserDataConfig configuration in code salt.
Definition: UserDataConfig.hpp:21
address super_root
Flex SuperRoot address.
Definition: UserDataConfig.hpp:22
Binding to allow orders only to specific flex root and with specific unsalted PriceXchg code hash.
Definition: bind_info.hpp:8