Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix prologue gas token error #185

Merged
merged 2 commits into from
Oct 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified build/StarcoinFramework/bytecode_modules/Oracle.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/TransactionManager.mv
Binary file not shown.
2 changes: 1 addition & 1 deletion build/StarcoinFramework/docs/TransactionManager.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ It verifies:
// 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>));
<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;())
(<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)
};
Expand Down
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/TransactionManager.mvsm
Binary file not shown.
34 changes: 20 additions & 14 deletions integration-tests/daospaceplugin/gas_oracle_plugin.exp
Original file line number Diff line number Diff line change
@@ -1,64 +1,70 @@
processed 27 tasks

task 6 'run'. lines 79-87:
task 5 'run'. lines 67-75:
{
"gas_used": 105455,
"gas_used": 46617,
"status": "Executed"
}

task 7 'run'. lines 89-98:
task 6 'run'. lines 77-85:
{
"gas_used": 77620,
"status": "Executed"
}

task 7 'run'. lines 87-96:
{
"gas_used": 1259689,
"status": "Executed"
}

task 9 'run'. lines 102-116:
task 9 'run'. lines 100-114:
{
"gas_used": 373579,
"status": "Executed"
}

task 13 'run'. lines 124-135:
task 13 'run'. lines 122-133:
{
"gas_used": 101440,
"status": "Executed"
}

task 16 'run'. lines 142-151:
task 16 'run'. lines 140-149:
{
"gas_used": 575872,
"status": "Executed"
}

task 17 'run'. lines 154-179:
task 17 'run'. lines 152-177:
{
"gas_used": 449602,
"status": "Executed"
}

task 19 'call'. lines 183-183:
task 19 'call'. lines 181-181:
"0xa7dcef9aef26202fce82a7c7d6672afb/1/0x00000000000000000000000000000001::IdentifierNFT::IdentifierNFT<0x00000000000000000000000000000001::DAOSpace::DAOMember<0x662ba5a1a1da0f1c70a9762c7eeb7aaf::XDAO::XDAO>,0x00000000000000000000000000000001::DAOSpace::DAOMemberBody<0x662ba5a1a1da0f1c70a9762c7eeb7aaf::XDAO::XDAO>>"

task 21 'run'. lines 187-202:
task 21 'run'. lines 185-200:
{
"gas_used": 7794857,
"status": "Executed"
}

task 23 'run'. lines 206-219:
task 23 'run'. lines 204-217:
{
"gas_used": 173636,
"status": "Executed"
}

task 24 'run'. lines 221-229:
task 24 'run'. lines 219-227:
{
"gas_used": 45286,
"gas_used": 48325,
"status": "Executed"
}

task 26 'run'. lines 234-251:
task 26 'run'. lines 232-249:
{
"gas_used": 582817,
"gas_used": 583131,
"status": "Executed"
}
20 changes: 9 additions & 11 deletions integration-tests/daospaceplugin/gas_oracle_plugin.move
Original file line number Diff line number Diff line change
Expand Up @@ -64,24 +64,22 @@ module alice::Token {
}
// check: EXECUTED

//# publish
module alice::Oracle {
use alice::Token::AliceToken;
//# run --signers alice
script {
use StarcoinFramework::GasOracle;

public fun initialize(account: &signer) {
GasOracle::register<AliceToken>(account, 9);
GasOracle::init_data_source<AliceToken>(account, 0);
use alice::Token::AliceToken;
fun main(account: signer) {
GasOracle::register_entry<AliceToken>(account,9);
}
}
// check: EXECUTED

//# run --signers alice
script {
use alice::Oracle;

use StarcoinFramework::GasOracle;
use alice::Token::AliceToken;
fun main(account: signer) {
Oracle::initialize(&account);
GasOracle::init_data_source_entry<AliceToken>(account,0);
}
}
// check: EXECUTED
Expand Down Expand Up @@ -224,7 +222,7 @@ script {
use StarcoinFramework::GasOracle;

fun main(account: signer) {
GasOracle::update<AliceToken>(&account, 100);
GasOracle::update_entry<AliceToken>(account, 100);
}
}

Expand Down
10 changes: 5 additions & 5 deletions integration-tests/oracle/oracle.exp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ task 7 'run'. lines 36-47:

task 8 'run'. lines 49-61:
{
"gas_used": 37189,
"gas_used": 38445,
"status": "Executed"
}

Expand All @@ -32,13 +32,13 @@ task 10 'run'. lines 66-73:

task 11 'run'. lines 76-84:
{
"gas_used": 19877,
"gas_used": 20505,
"status": "Executed"
}

task 13 'run'. lines 89-103:
{
"gas_used": 77033,
"gas_used": 77661,
"status": {
"MoveAbort": {
"location": {
Expand All @@ -54,7 +54,7 @@ task 13 'run'. lines 89-103:

task 14 'run'. lines 106-120:
{
"gas_used": 77033,
"gas_used": 77661,
"status": {
"MoveAbort": {
"location": {
Expand Down Expand Up @@ -98,6 +98,6 @@ task 18 'run'. lines 169-178:

task 19 'run'. lines 180-189:
{
"gas_used": 14158,
"gas_used": 14472,
"status": "Executed"
}
17 changes: 16 additions & 1 deletion sources/Oracle.move
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ module Oracle {
const ERR_NO_UPDATE_CAPABILITY: u64 = 102;
const ERR_NO_DATA_SOURCE: u64 = 103;
const ERR_CAPABILITY_ACCOUNT_MISS_MATCH: u64 = 104;

const ERR_NO_ORACLE_FEED:u64 =105;
/// deprecated.
public fun initialize(_sender: &signer) {
}
Expand Down Expand Up @@ -143,12 +143,14 @@ module Oracle {

/// Read the Oracle's value from `ds_addr`
public fun read<OracleT:copy+store+drop, ValueT: copy+store+drop>(ds_addr: address): ValueT acquires OracleFeed{
assert!(exists<OracleFeed<OracleT,ValueT>>(ds_addr), Errors::invalid_state(ERR_NO_ORACLE_FEED));
let oracle_feed = borrow_global<OracleFeed<OracleT, ValueT>>(ds_addr);
*&oracle_feed.record.value
}

/// Read the Oracle's DataRecord from `ds_addr`
public fun read_record<OracleT:copy+store+drop, ValueT: copy+store+drop>(ds_addr: address): DataRecord<ValueT> acquires OracleFeed{
assert!(exists<OracleFeed<OracleT,ValueT>>(ds_addr), Errors::invalid_state(ERR_NO_ORACLE_FEED));
let oracle_feed = borrow_global<OracleFeed<OracleT, ValueT>>(ds_addr);
*&oracle_feed.record
}
Expand Down Expand Up @@ -254,20 +256,33 @@ module PriceOracle {

module GasOracle {
use StarcoinFramework::PriceOracle;

struct STCToken<phantom TokenType:store> has copy, store, drop {
}

public fun register<TokenType:store>(sender: &signer, precision: u8){
PriceOracle::register_oracle<STCToken<TokenType>>(sender, precision);
}
public(script) fun register_entry<TokenType:store>(sender: signer, precision: u8){
register<TokenType>(&sender, precision);
}

public fun init_data_source<TokenType: store>(sender: &signer, init_value: u128){
PriceOracle::init_data_source<STCToken<TokenType>>(sender, init_value);
}

public(script) fun init_data_source_entry<TokenType: store>(sender: signer, init_value: u128){
init_data_source<TokenType>(&sender, init_value);
}

public fun update<TokenType:store>(sender: &signer, value: u128){
PriceOracle::update<STCToken<TokenType>>(sender, value);
}

public(script) fun update_entry<TokenType:store>(sender: signer, value: u128){
update<TokenType>(&sender, value);
}

public fun get_scaling_factor<TokenType: store>(): u128 {
PriceOracle::get_scaling_factor<STCToken<TokenType>>()
}
Expand Down
3 changes: 1 addition & 2 deletions sources/TransactionManager.move
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ module TransactionManager {
use StarcoinFramework::Epoch;
use StarcoinFramework::Hash;
use StarcoinFramework::Vector;
use StarcoinFramework::GasOracle::STCToken;
use StarcoinFramework::StarcoinDAO::StarcoinDAO;
use StarcoinFramework::GasOracleProposalPlugin;
use StarcoinFramework::STC;
Expand Down Expand Up @@ -68,7 +67,7 @@ module TransactionManager {
// specified by the transaction
assert!(ChainId::get() == chain_id, Errors::invalid_argument(EPROLOGUE_BAD_CHAIN_ID));
let (stc_price,scaling_factor)= if (!STC::is_stc<TokenType>()){
(GasOracleProposalPlugin::gas_oracle_read<StarcoinDAO, STCToken<TokenType>>(),GasOracle::get_scaling_factor<TokenType>())
(GasOracleProposalPlugin::gas_oracle_read<StarcoinDAO, TokenType>(),GasOracle::get_scaling_factor<TokenType>())
}else{
(1,1)
};
Expand Down