Skip to content

Commit

Permalink
EasyGas support (#92)
Browse files Browse the repository at this point in the history
* GasTokenOracle && Easygas support

* Update gas token oracle proposal plugin

* Fix issue && add tests

* refactor && oracle source multi addr

* Add txn prologue tests && fix stc_price

* Add scaling for stc price

* set auto accept for gas token

* setting gas token at least to 1

* Add more tests

* Add stc balance check
  • Loading branch information
sanlee42 committed Sep 28, 2022
1 parent 25148a4 commit e142883
Show file tree
Hide file tree
Showing 37 changed files with 960 additions and 177 deletions.
8 changes: 7 additions & 1 deletion build/StarcoinFramework/BuildInfo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: FixedPoint32
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: GasOracle
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: GasOracleProposalPlugin
: StarcoinFramework
? address: "0x00000000000000000000000000000001"
name: Genesis
: StarcoinFramework
Expand Down Expand Up @@ -321,7 +327,7 @@ compiled_package_info:
? address: "0x00000000000000000000000000000001"
name: YieldFarmingV2
: StarcoinFramework
source_digest: 5F39868CB8511B5984EA5AFAC56DD524087DB8401BE9901148BA2CBF177357E4
source_digest: 8EF29F90FF139AC49CC2FE59DA218D959B0B29842ABFA2203CAC3C96153AF336
build_flags:
dev_mode: false
test_mode: false
Expand Down
Binary file modified build/StarcoinFramework/bytecode_modules/Account.mv
Binary file not shown.
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/PriceOracle.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/StdlibUpgradeScripts.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/TransactionManager.mv
Binary file not shown.
192 changes: 132 additions & 60 deletions build/StarcoinFramework/docs/Account.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions build/StarcoinFramework/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ This is the root document for the Move StarcoinFramework module documentation. T
- [`0x1::Event`](Event.md#0x1_Event)
- [`0x1::EventUtil`](EventUtil.md#0x1_EventUtil)
- [`0x1::FixedPoint32`](FixedPoint32.md#0x1_FixedPoint32)
- [`0x1::GasOracle`](Oracle.md#0x1_GasOracle)
- [`0x1::GasOracleProposalPlugin`](GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin)
- [`0x1::Genesis`](Genesis.md#0x1_Genesis)
- [`0x1::GenesisNFT`](GenesisNFT.md#0x1_GenesisNFT)
- [`0x1::GenesisNFTScripts`](GenesisNFT.md#0x1_GenesisNFTScripts)
Expand Down
2 changes: 2 additions & 0 deletions build/StarcoinFramework/docs/StdlibUpgradeScripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ The module for StdlibUpgrade init scripts
<b>use</b> <a href="DAOPluginMarketplace.md#0x1_DAOPluginMarketplace">0x1::DAOPluginMarketplace</a>;
<b>use</b> <a href="DAORegistry.md#0x1_DAORegistry">0x1::DAORegistry</a>;
<b>use</b> <a href="Dao.md#0x1_Dao">0x1::Dao</a>;
<b>use</b> <a href="GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin">0x1::GasOracleProposalPlugin</a>;
<b>use</b> <a href="GenesisNFT.md#0x1_GenesisNFT">0x1::GenesisNFT</a>;
<b>use</b> <a href="GenesisSignerCapability.md#0x1_GenesisSignerCapability">0x1::GenesisSignerCapability</a>;
<b>use</b> <a href="GrantProposalPlugin.md#0x1_GrantProposalPlugin">0x1::GrantProposalPlugin</a>;
Expand Down Expand Up @@ -365,6 +366,7 @@ deprecated, use <code>do_upgrade_from_v6_to_v7_with_language_version</code>.
<a href="MintProposalPlugin.md#0x1_MintProposalPlugin_initialize">MintProposalPlugin::initialize</a>();
<a href="StakeToSBTPlugin.md#0x1_StakeToSBTPlugin_initialize">StakeToSBTPlugin::initialize</a>();
<a href="UpgradeModulePlugin.md#0x1_UpgradeModulePlugin_initialize">UpgradeModulePlugin::initialize</a>();
<a href="GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin_initialize">GasOracleProposalPlugin::initialize</a>();

//TODO : config rate need mind
// voting_delay: 60000 ms
Expand Down
23 changes: 20 additions & 3 deletions build/StarcoinFramework/docs/TransactionManager.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@
<b>use</b> <a href="CoreAddresses.md#0x1_CoreAddresses">0x1::CoreAddresses</a>;
<b>use</b> <a href="Epoch.md#0x1_Epoch">0x1::Epoch</a>;
<b>use</b> <a href="Errors.md#0x1_Errors">0x1::Errors</a>;
<b>use</b> <a href="Oracle.md#0x1_GasOracle">0x1::GasOracle</a>;
<b>use</b> <a href="GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin">0x1::GasOracleProposalPlugin</a>;
<b>use</b> <a href="PackageTxnManager.md#0x1_PackageTxnManager">0x1::PackageTxnManager</a>;
<b>use</b> <a href="STC.md#0x1_STC">0x1::STC</a>;
<b>use</b> <a href="Signer.md#0x1_Signer">0x1::Signer</a>;
<b>use</b> <a href="StarcoinDAO.md#0x1_StarcoinDAO">0x1::StarcoinDAO</a>;
<b>use</b> <a href="Timestamp.md#0x1_Timestamp">0x1::Timestamp</a>;
<b>use</b> <a href="Token.md#0x1_Token">0x1::Token</a>;
<b>use</b> <a href="TransactionFee.md#0x1_TransactionFee">0x1::TransactionFee</a>;
Expand Down Expand Up @@ -154,13 +157,21 @@ It verifies:
// Check that the chain ID stored on-chain matches the chain ID
// specified by the transaction
<b>assert</b>!(<a href="ChainId.md#0x1_ChainId_get">ChainId::get</a>() == chain_id, <a href="Errors.md#0x1_Errors_invalid_argument">Errors::invalid_argument</a>(<a href="TransactionManager.md#0x1_TransactionManager_EPROLOGUE_BAD_CHAIN_ID">EPROLOGUE_BAD_CHAIN_ID</a>));
<a href="Account.md#0x1_Account_txn_prologue">Account::txn_prologue</a>&lt;TokenType&gt;(
<b>let</b> (stc_price,scaling_factor)= <b>if</b> (!<a href="STC.md#0x1_STC_is_stc">STC::is_stc</a>&lt;TokenType&gt;()){
(<a href="GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin_gas_oracle_read">GasOracleProposalPlugin::gas_oracle_read</a>&lt;<a href="StarcoinDAO.md#0x1_StarcoinDAO">StarcoinDAO</a>, STCToken&lt;TokenType&gt;&gt;(),<a href="Oracle.md#0x1_GasOracle_get_scaling_factor">GasOracle::get_scaling_factor</a>&lt;TokenType&gt;())
}<b>else</b>{
(1,1)
};

<a href="Account.md#0x1_Account_txn_prologue_v2">Account::txn_prologue_v2</a>&lt;TokenType&gt;(
&account,
txn_sender,
txn_sequence_number,
txn_authentication_key_preimage,
txn_gas_price,
txn_max_gas_units,
stc_price,
scaling_factor,
);
<b>assert</b>!(
<a href="TransactionTimeout.md#0x1_TransactionTimeout_is_valid_transaction_timestamp">TransactionTimeout::is_valid_transaction_timestamp</a>(txn_expiration_time),
Expand Down Expand Up @@ -210,8 +221,6 @@ It verifies:
<b>include</b> <a href="Timestamp.md#0x1_Timestamp_AbortsIfTimestampNotExists">Timestamp::AbortsIfTimestampNotExists</a>;
<b>include</b> <a href="Block.md#0x1_Block_AbortsIfBlockMetadataNotExist">Block::AbortsIfBlockMetadataNotExist</a>;
<b>aborts_if</b> txn_gas_price * txn_max_gas_units &gt; 0 && !<b>exists</b>&lt;<a href="Account.md#0x1_Account_Balance">Account::Balance</a>&lt;TokenType&gt;&gt;(txn_sender);
<b>aborts_if</b> txn_gas_price * txn_max_gas_units &gt; 0 && StarcoinFramework::Token::spec_token_code&lt;TokenType&gt;() != StarcoinFramework::Token::spec_token_code&lt;<a href="STC.md#0x1_STC">STC</a>&gt;();
<b>aborts_if</b> txn_gas_price * txn_max_gas_units &gt; 0 && <b>global</b>&lt;<a href="Account.md#0x1_Account_Balance">Account::Balance</a>&lt;TokenType&gt;&gt;(txn_sender).token.value &lt; txn_gas_price * txn_max_gas_units;
<b>aborts_if</b> txn_gas_price * txn_max_gas_units &gt; 0 && txn_sequence_number &gt;= max_u64();
<b>aborts_if</b> txn_sequence_number &lt; <b>global</b>&lt;<a href="Account.md#0x1_Account_Account">Account::Account</a>&gt;(txn_sender).sequence_number;
<b>aborts_if</b> txn_sequence_number != <b>global</b>&lt;<a href="Account.md#0x1_Account_Account">Account::Account</a>&gt;(txn_sender).sequence_number;
Expand Down Expand Up @@ -323,6 +332,12 @@ It collects gas and bumps the sequence number
success: bool,
) {
<a href="CoreAddresses.md#0x1_CoreAddresses_assert_genesis_address">CoreAddresses::assert_genesis_address</a>(&account);
<b>let</b> (stc_price,scaling_factor) =
<b>if</b> (!<a href="STC.md#0x1_STC_is_stc">STC::is_stc</a>&lt;TokenType&gt;()){
(<a href="GasOracleProposalPlugin.md#0x1_GasOracleProposalPlugin_gas_oracle_read">GasOracleProposalPlugin::gas_oracle_read</a>&lt;<a href="StarcoinDAO.md#0x1_StarcoinDAO">StarcoinDAO</a>, TokenType&gt;(),<a href="Oracle.md#0x1_GasOracle_get_scaling_factor">GasOracle::get_scaling_factor</a>&lt;TokenType&gt;())
}<b>else</b>{
(1,1)
};
<a href="Account.md#0x1_Account_txn_epilogue_v2">Account::txn_epilogue_v2</a>&lt;TokenType&gt;(
&account,
txn_sender,
Expand All @@ -331,6 +346,8 @@ It collects gas and bumps the sequence number
txn_gas_price,
txn_max_gas_units,
gas_units_remaining,
stc_price,
scaling_factor
);
<b>if</b> (txn_payload_type == <a href="TransactionManager.md#0x1_TransactionManager_TXN_PAYLOAD_TYPE_PACKAGE">TXN_PAYLOAD_TYPE_PACKAGE</a>) {
<a href="PackageTxnManager.md#0x1_PackageTxnManager_package_txn_epilogue">PackageTxnManager::package_txn_epilogue</a>(
Expand Down
Binary file modified build/StarcoinFramework/source_maps/Account.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/GenesisSignerCapability.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/Oracle.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/PriceOracle.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/PriceOracleAggregator.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/PriceOracleScripts.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/STCUSDOracle.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/StdlibUpgradeScripts.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/TransactionManager.mvsm
Binary file not shown.
66 changes: 47 additions & 19 deletions integration-tests/account/txn_prologue_and_epilogue.exp
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
processed 12 tasks
processed 15 tasks

task 3 'run'. lines 8-23:
task 3 'run'. lines 7-28:
{
"gas_used": 494124,
"gas_used": 621301,
"status": "Executed"
}

task 4 'run'. lines 27-59:
task 4 'run'. lines 30-62:
{
"gas_used": 174759,
"gas_used": 180803,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -22,9 +22,9 @@ task 4 'run'. lines 27-59:
}
}

task 5 'run'. lines 63-90:
task 5 'run'. lines 66-92:
{
"gas_used": 329083,
"gas_used": 330588,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -38,9 +38,9 @@ task 5 'run'. lines 63-90:
}
}

task 6 'run'. lines 94-122:
task 6 'run'. lines 96-124:
{
"gas_used": 300870,
"gas_used": 306856,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -54,9 +54,9 @@ task 6 'run'. lines 94-122:
}
}

task 7 'run'. lines 126-156:
task 7 'run'. lines 128-158:
{
"gas_used": 335601,
"gas_used": 355103,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -70,15 +70,15 @@ task 7 'run'. lines 126-156:
}
}

task 8 'run'. lines 160-205:
task 8 'run'. lines 162-207:
{
"gas_used": 403810,
"gas_used": 478362,
"status": "Executed"
}

task 9 'run'. lines 209-239:
task 9 'run'. lines 211-241:
{
"gas_used": 335471,
"gas_used": 354973,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -92,9 +92,9 @@ task 9 'run'. lines 209-239:
}
}

task 10 'run'. lines 243-274:
task 10 'run'. lines 245-276:
{
"gas_used": 180123,
"gas_used": 197287,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -108,9 +108,9 @@ task 10 'run'. lines 243-274:
}
}

task 11 'run'. lines 278-309:
task 11 'run'. lines 280-311:
{
"gas_used": 174016,
"gas_used": 175186,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -123,3 +123,31 @@ task 11 'run'. lines 278-309:
}
}
}

task 12 'run'. lines 313-349:
{
"gas_used": 359119,
"status": {
"MoveAbort": {
"location": {
"Module": {
"address": "0x00000000000000000000000000000001",
"name": "Account"
}
},
"abort_code": "1031"
}
}
}

task 13 'run'. lines 351-401:
{
"gas_used": 517887,
"status": "Executed"
}

task 14 'run'. lines 404-427:
{
"gas_used": 37463,
"status": "Executed"
}

0 comments on commit e142883

Please sign in to comment.