Skip to content

Commit 5e93e23

Browse files
committed
wallet_test updated
1 parent ffa5b66 commit 5e93e23

File tree

1 file changed

+85
-37
lines changed

1 file changed

+85
-37
lines changed

wallet/unittests/wallet_test.cpp

Lines changed: 85 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2954,6 +2954,78 @@ namespace
29542954
Block::Pbft::Address m_pValidatorAddress[s_Validators];
29552955
};
29562956

2957+
2958+
struct PbftTreasuryBuilder
2959+
{
2960+
Treasury::Data::Group& m_Tg;
2961+
ContractID m_Cid;
2962+
Shaders::PBFT::Settings m_Settings;
2963+
2964+
PbftTreasuryBuilder(Treasury::Data::Group& tg)
2965+
:m_Tg(tg)
2966+
{
2967+
ZeroObject(m_Settings);
2968+
}
2969+
2970+
void Init()
2971+
{
2972+
m_Tg.m_Aid = m_Settings.m_aidStake;
2973+
2974+
auto pKrn = std::make_unique<beam::TxKernelContractCreate>();
2975+
MyManager::Compile(pKrn->m_Data, "pbft/contract.wasm", beam::bvm2::Processor::Kind::Contract);
2976+
2977+
pKrn->m_Args.resize(sizeof(Shaders::PBFT::Method::Create));
2978+
auto& args = *(Shaders::PBFT::Method::Create*) &pKrn->m_Args.front();
2979+
ZeroObject(args);
2980+
2981+
args.m_Settings.m_aidStake = ByteOrder::to_le(m_Settings.m_aidStake);
2982+
args.m_Settings.m_hUnbondLock = ByteOrder::to_le(m_Settings.m_hUnbondLock);
2983+
args.m_Settings.m_MinValidatorStake = ByteOrder::to_le(m_Settings.m_MinValidatorStake);
2984+
2985+
ECC::Scalar::Native sk;
2986+
sk.GenRandomNnz();
2987+
ECC::Point::Native ptFunds(beam::Zero);
2988+
pKrn->Sign(&sk, 1, ptFunds, nullptr);
2989+
2990+
bvm2::get_Cid(m_Cid, pKrn->m_Data, pKrn->m_Args);
2991+
2992+
m_Tg.m_Data.m_vKernels.push_back(std::move(pKrn));
2993+
2994+
sk = -sk;
2995+
m_Tg.m_Data.m_Offset = ECC::Scalar::Native(m_Tg.m_Data.m_Offset) + sk;
2996+
}
2997+
2998+
void AddValidator(const Block::Pbft::Address& addr, const ECC::Point& pkDelegator, Amount stake)
2999+
{
3000+
auto pKrn = std::make_unique<beam::TxKernelContractInvoke>();
3001+
pKrn->m_Cid = m_Cid;
3002+
3003+
pKrn->m_Args.resize(sizeof(Shaders::PBFT::Method::ValidatorRegister));
3004+
auto& args = *(Shaders::PBFT::Method::ValidatorRegister*)&pKrn->m_Args.front();
3005+
pKrn->m_iMethod = args.s_iMethod;
3006+
3007+
ZeroObject(args);
3008+
args.m_Commission_cpc = 500;
3009+
args.m_Stake = ByteOrder::to_le(stake);
3010+
args.m_Validator = Cast::Down<ECC::uintBig>(addr);
3011+
args.m_Delegator = pkDelegator;
3012+
3013+
ECC::Point::Native ptFunds(Zero);
3014+
CoinID::Generator(m_Settings.m_aidStake).AddValue(ptFunds, stake);
3015+
3016+
ECC::Scalar::Native sk;
3017+
sk.GenRandomNnz();
3018+
pKrn->Sign(&sk, 1, ptFunds, nullptr);
3019+
3020+
m_Tg.m_Data.m_vKernels.push_back(std::move(pKrn));
3021+
3022+
sk = -sk;
3023+
m_Tg.m_Data.m_Offset = ECC::Scalar::Native(m_Tg.m_Data.m_Offset) + sk;
3024+
3025+
m_Tg.m_Value += MultiWord::From(stake);
3026+
}
3027+
};
3028+
29573029
void L2Params::RunInThread()
29583030
{
29593031
Rules::Scope scopeRules(m_RulesL2);
@@ -2970,46 +3042,22 @@ namespace
29703042
// add PBFT and bridge L2 contract deployment
29713043
{
29723044
Treasury::Data td;
2973-
auto& tg = td.m_vGroups.emplace_back();
2974-
tg.m_Value = Zero;
2975-
2976-
{
2977-
auto pKrn = std::make_unique<beam::TxKernelContractCreate>();
2978-
MyManager::Compile(pKrn->m_Data, "pbft/contract.wasm", beam::bvm2::Processor::Kind::Contract);
3045+
PbftTreasuryBuilder tb(td.m_vGroups.emplace_back());
3046+
tb.m_Tg.m_Value = Zero;
3047+
tb.m_Tg.m_Data.m_Offset = Zero;
29793048

2980-
Shaders::PBFT::Method::Create m;
2981-
ZeroObject(m);
2982-
m.m_Validators = s_Validators;
2983-
m.m_Settings.m_aidStake = 7;
3049+
tb.m_Settings.m_aidStake = 7;
3050+
tb.m_Settings.m_hUnbondLock = 15;
3051+
tb.m_Settings.m_MinValidatorStake = Rules::Coin * 600;
29843052

2985-
std::vector<Shaders::PBFT::State::Validator::Init> vVals;
2986-
ECC::Scalar::Native sk;
3053+
tb.Init();
29873054

2988-
vVals.resize(s_Validators);
2989-
2990-
for (uint32_t i = 0; i < s_Validators; i++)
2991-
{
2992-
vVals[i].m_Address = Cast::Down<ECC::uintBig>(m_pValidatorAddress[i]);
2993-
vVals[i].m_Stake = Rules::Coin * 5000;
2994-
}
2995-
2996-
pKrn->m_Args.resize(sizeof(m) + sizeof(Shaders::PBFT::State::Validator::Init) * m.m_Validators);
2997-
memcpy(&pKrn->m_Args.front(), &m, sizeof(m));
2998-
2999-
if (m.m_Validators)
3000-
memcpy(&pKrn->m_Args.front() + sizeof(m), &vVals.front(), sizeof(Shaders::PBFT::State::Validator::Init) * m.m_Validators);
3001-
3002-
sk.GenRandomNnz();
3003-
ECC::Point::Native ptFunds(beam::Zero);
3004-
pKrn->Sign(&sk, 1, ptFunds, nullptr);
3005-
3006-
tg.m_Data.m_vKernels.push_back(std::move(pKrn));
3007-
3008-
sk = -sk;
3009-
tg.m_Data.m_Offset = sk;
3055+
for (uint32_t i = 0; i < s_Validators; i++)
3056+
{
3057+
ECC::Point ptDelegator = Zero; // not used
3058+
tb.AddValidator(m_pValidatorAddress[i], ptDelegator, Rules::Coin * 5000);
30103059
}
30113060

3012-
30133061
{
30143062
auto pKrn = std::make_unique<beam::TxKernelContractCreate>();
30153063
MyManager::Compile(pKrn->m_Data, "l2tst1/contract_l2.wasm", MyManager::Kind::Contract);
@@ -3020,10 +3068,10 @@ namespace
30203068

30213069
pKrn->Sign(&sk, 1, ptFunds, nullptr);
30223070

3023-
tg.m_Data.m_vKernels.push_back(std::move(pKrn));
3071+
tb.m_Tg.m_Data.m_vKernels.push_back(std::move(pKrn));
30243072

30253073
sk = -sk;
3026-
tg.m_Data.m_Offset = ECC::Scalar::Native(tg.m_Data.m_Offset) + sk;
3074+
tb.m_Tg.m_Data.m_Offset = ECC::Scalar::Native(tb.m_Tg.m_Data.m_Offset) + sk;
30273075
}
30283076

30293077
beam::Serializer ser;

0 commit comments

Comments
 (0)