Skip to content
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
7 changes: 5 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@
"rust-analyzer.rustfmt.extraArgs": [
"+nightly"
],
"rust-analyzer.showUnlinkedFileNotification": false
}
"rust-analyzer.showUnlinkedFileNotification": false,
"cSpell.words": [
"lumio"
]
}
26 changes: 18 additions & 8 deletions api/src/transactions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ use crate::{
use anyhow::Context as AnyhowContext;
use lumio_api_types::{
transaction::TransactionSummary, verify_function_identifier, verify_module_identifier, Address,
LumioError, LumioErrorCode, AsConverter, EncodeSubmissionRequest, GasEstimation,
GasEstimationBcs, HashValue, HexEncodedBytes, LedgerInfo, MoveType, PendingTransaction,
AsConverter, EncodeSubmissionRequest, GasEstimation, GasEstimationBcs, HashValue,
HexEncodedBytes, LedgerInfo, LumioError, LumioErrorCode, MoveType, PendingTransaction,
SubmitTransactionRequest, Transaction, TransactionData, TransactionOnChainData,
TransactionsBatchSingleSubmissionFailure, TransactionsBatchSubmissionResult, UserTransaction,
VerifyInput, VerifyInputWithRecursion, U64,
Expand All @@ -40,7 +40,7 @@ use lumio_types::{
TransactionPayload, TransactionPayloadInner,
},
vm_status::StatusCode,
LumioCoinType, CoinType,
CoinType, LumioCoinType,
};
use lumio_vm::{LumioSimulationVM, LumioVM};
use move_core_types::{ident_str, language_storage::ModuleId, vm_status::VMStatus};
Expand Down Expand Up @@ -91,16 +91,20 @@ pub enum SubmitTransactionPost {

// TODO: Since I don't want to impl all the Poem derives on SignedTransaction,
// find a way to at least indicate in the spec that it expects a SignedTransaction.
// TODO: https://github.com/lumio-labs/lumio-core/issues/2275
// TODO: https://github.com/aptos-labs/aptos-core/issues/2275
#[oai(content_type = "application/x.lumio.signed_transaction+bcs")]
Bcs(Bcs),

// to support the wallet
#[oai(content_type = "application/x.aptos.signed_transaction+bcs")]
Old(Bcs),
}

impl VerifyInput for SubmitTransactionPost {
fn verify(&self) -> anyhow::Result<()> {
match self {
SubmitTransactionPost::Json(inner) => inner.0.verify(),
SubmitTransactionPost::Bcs(_) => Ok(()),
SubmitTransactionPost::Bcs(_) | SubmitTransactionPost::Old(_) => Ok(()),
}
}
}
Expand All @@ -117,6 +121,10 @@ pub enum SubmitTransactionsBatchPost {
// TODO: https://github.com/lumio-labs/lumio-core/issues/2275
#[oai(content_type = "application/x.lumio.signed_transaction+bcs")]
Bcs(Bcs),

// to support the wallet
#[oai(content_type = "application/x.aptos.signed_transaction+bcs")]
Old(Bcs),
}

impl VerifyInput for SubmitTransactionsBatchPost {
Expand All @@ -127,7 +135,7 @@ impl VerifyInput for SubmitTransactionsBatchPost {
request.verify()?;
}
},
SubmitTransactionsBatchPost::Bcs(_) => {},
SubmitTransactionsBatchPost::Bcs(_) | SubmitTransactionsBatchPost::Old(_) => {},
}
Ok(())
}
Expand Down Expand Up @@ -1184,7 +1192,7 @@ impl TransactionsApi {
pub const MAX_SIGNED_TRANSACTION_DEPTH: usize = 16;

match data {
SubmitTransactionPost::Bcs(data) => {
SubmitTransactionPost::Bcs(data) | SubmitTransactionPost::Old(data) => {
let signed_transaction: SignedTransaction =
bcs::from_bytes_with_limit(&data.0, MAX_SIGNED_TRANSACTION_DEPTH)
.context("Failed to deserialize input into SignedTransaction")
Expand Down Expand Up @@ -1326,7 +1334,9 @@ impl TransactionsApi {
data: SubmitTransactionsBatchPost,
) -> Result<Vec<SignedTransaction>, SubmitTransactionError> {
match data {
SubmitTransactionsBatchPost::Bcs(data) => {
SubmitTransactionsBatchPost::Bcs(data) |
SubmitTransactionsBatchPost::Old(data)
=> {
let signed_transactions = bcs::from_bytes(&data.0)
.context("Failed to deserialize input into SignedTransaction")
.map_err(|err| {
Expand Down
10 changes: 7 additions & 3 deletions api/src/view_function.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ use crate::{
ApiTags, Context,
};
use anyhow::Context as anyhowContext;
use itertools::Itertools;
use lumio_api_types::{
LumioErrorCode, AsConverter, MoveValue, ViewFunction, ViewRequest, MAX_RECURSIVE_TYPES_ALLOWED,
AsConverter, LumioErrorCode, MoveValue, ViewFunction, ViewRequest, MAX_RECURSIVE_TYPES_ALLOWED,
U64,
};
use lumio_bcs_utils::serialize_uleb128;
use lumio_types::{state_store::StateView, transaction::ViewFunctionError, vm_status::StatusCode};
use lumio_vm::LumioVM;
use itertools::Itertools;
use move_core_types::language_storage::TypeTag;
use poem_openapi::{param::Query, payload::Json, ApiRequest, OpenApi};
use std::sync::Arc;
Expand Down Expand Up @@ -56,6 +56,10 @@ pub enum ViewFunctionRequest {

#[oai(content_type = "application/x.lumio.view_function+bcs")]
Bcs(Bcs),

// to support the wallet
#[oai(content_type = "application/x.aptos.view_function+bcs")]
Old(Bcs),
}

#[OpenApi]
Expand Down Expand Up @@ -123,7 +127,7 @@ fn view_request(
&ledger_info,
)
})?,
ViewFunctionRequest::Bcs(data) => {
ViewFunctionRequest::Bcs(data) | ViewFunctionRequest::Old(data) => {
bcs::from_bytes_with_limit(data.0.as_slice(), MAX_RECURSIVE_TYPES_ALLOWED as usize)
.context("Failed to deserialize input into ViewRequest")
.map_err(|err| {
Expand Down
2 changes: 1 addition & 1 deletion crates/lumio-crypto/src/hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ use tiny_keccak::{Hasher, Sha3};
/// A prefix used to begin the salt of every hashable structure. The salt
/// consists in this global prefix, concatenated with the specified
/// serialization name of the struct.
pub(crate) const HASH_PREFIX: &[u8] = b"LUMIO::";
pub(crate) const HASH_PREFIX: &[u8] = b"APTOS::";

/// Output value of our hash function. Intentionally opaque for safety and modularity.
#[derive(Clone, Copy, Eq, Hash, PartialEq, PartialOrd, Ord)]
Expand Down