Transaction not hitting wallet

Hi there.

Firstly I wanted to congratulate you all! I’ve been following your project for awhile and am super excited about the launch!

Next, while I know FTX isn’t an official channel for getting MobileCoin I was hoping you could help me troubleshoot a withdrawal I did which didn’t show up in my wallet. I need a way to prove to them that the funds never came to my wallet.

I bought some MOB on their exchange. I did a small test withdrawal which went through to the desktop wallet very quickly. I then withdrew the large remainder of my balance which did NOT go through. To test if the wallet was syncing properly I tired sending part of the small test sum back to them and withdrew it again which did work. I triple checked that the addresses on all 3 withdrawals were the correct.

I’ve been going back and forth with their customer service (they are very very slow in responding BTW) and they’ve stated that the funds were sent out properly on their end.

The desktop wallet doesn’t seem to have a transaction history. Is there a way to look at a block explorer to track down all the transactions to my wallet or something like that? What method should I use to prove this transaction didn’t happen?

Are there any other reasons why a transaction might not make it to a wallet? Not enough fees allocated, etc.?

Thank you so much for any help you can provide!

I have trouble following you? Has the sum of the second transfer been deducted from you wallet or has the transaction just not been transferred at all?

Sorry for not being clear. The second larger transaction has not been transferred at all. The exchange deducted it from my balance and claims to have sent it it me, but it never showed up in my desktop wallet.

Hmm that seems strange. Have you confirmed with the exchange where you sent the balance?

Can you ask them for a transaction receipt?

Cheers,
Joshua

On the exchange in my withdrawal history, the correct address is listed for that transaction. I’ll ask them to confirm this.

I’ll also ask them for a transaction receipt.

In the withdrawal history they do have something listed as a transaction ID. For Bitcoin this is where they list the hash you can look up on a block explorer. I’m guessing this is different from the receipt you’re referring to? Here it is incase it might help: e04b19489f88934b15cbc3b94ad705747123b3a811f91abf5a5f5c219bee0544

I’m sure it will take them awhile to get back to me, but I’ll update when they do.

Thanks so much for your help Josh!

Can I post the transaction receipt? Otherwise, let’s take this to DM’s.

Edit: Also, can you post the version number for the client you’re using?

Cheers,
Joshua

It’s ok to post here.

My version number is: 0.1.3

Actually they just sent me a receipt. Is there any reason not to post it openly? Sorry, I’m not super familiar with the technology. I’ll send it to you in a DM just incase.

That’s up to you. If you post it publicly people will be able to bind the transaction to your forum identity, but if it’s not a sensitive transaction it’s probably fine.

I’ll ping eng to take a peek.

Cheers,
Joshua

Ok, here’s the receipt they sent me:

{“sender_tx_receipt”: {“tombstone”: 787, “key_images”: [“929eaf0a3bba8401166c4b2630e57370fb0ae2514aa2f562fdbd5467dc93f079”, “38252752eea2c0ddfe98fabcc0ea6b207a502cba27e952443c506fc04c2e7366”]}, “receiver_tx_receipt_list”: [{“recipient”: {“fog_report_id”: “”, “fog_report_url”: “”, “view_public_key”: “0a7f7992dd0d32656ad6d3e3ae723ba483215ed3a5212d470b7c5aae0fd1ce3d”, “spend_public_key”: “d8fbc2fce54cf8474391e7bd30cd7b8e325a9d85b78ce52b7c55313dd897837c”, “fog_authority_fingerprint_sig”: “”}, “tombstone”: 787, “tx_out_hash”: “f53b2e508b91eb1f89c98be068e159b4ddde3ae0a4ab9d6c6ffb57bf3b0c2d9e”, “tx_public_key”: “e04b19489f88934b15cbc3b94ad705747123b3a811f91abf5a5f5c219bee0544”, “confirmation_number”: “f53b2e508b91eb1f89c98be068e159b4ddde3ae0a4ab9d6c6ffb57bf3b0c2d9e”}]}

Here is the wallet address, which is correct, that is listed on my withdrawals page:

7wJjRHHRFkih726Zg3TvxyVua7MhJVwGddGWg7GM6d9NkbePkiCYMAdebVaqLnaAQLswTmarYhLU1BeQABycyfR7WCwF1ZjWToe22EFpCHy

I don’t see it anywhere in the receipt. Is the public key something other than the address? If so where would I find it?

The address is encoded in Base58, if you convert to hex and split into parts it looks like this:

4 byte checksum?: d5ce1f60
???: 0a480a (protobuf magic?)
???: 220a20 (ascii for double quotes)
view: 0a7f7992dd0d32656ad6d3e3ae723ba483215ed3a5212d470b7c5aae0fd1ce3d 
???: 12 (protobuf magic?)
???: 220a20 (ascii for double quotes)
spend: d8fbc2fce54cf8474391e7bd30cd7b8e325a9d85b78ce52b7c55313dd897837c

For code references on how the address is constructed:

mobilecoind/src/service.rs get_public_address_impl() -> gets address
api/src/display.rs b58_encode() -> adds checksum and encodes in Base58

This matches the receipt you got, which is good news. Beyond that… I’m not familiar with MC APIs, maybe there is a way to rescan the chain? It’s always possible your wallet somehow missed the block that contains your output.

2 Likes

Hi Charles - thank you for posting the receipt!

The quickest way to verify this receipt would be to use our full service wallet, which has a CLI interface. We are working on exposing receipt verification in the GUI wallet, but don’t yet have that feature.

I’ll post the steps here:

  1. Check out the full service repo: GitHub - mobilecoinofficial/full-service: A MobileCoin service for wallet implementations.

  2. Get the production enclave measurement:

    SIGSTRUCT_URI=$(curl -s https://enclave-distribution.prod.mobilecoin.com/production.json | grep sigstruct | awk '{print $2}' | tr -d \")
    curl -O https://enclave-distribution.prod.mobilecoin.com/${SIGSTRUCT_URI}
    
  3. Build and run the full service wallet for MainNet:

    RUST_LOG=info,mc_ledger_sync=info SGX_MODE=HW IAS_MODE=DEV CONSENSUS_ENCLAVE_CSS=$(pwd)/consensus-enclave.css cargo run --release -p mc-full-service -- --wallet-db /tmp/test-wallet-db/wallet.db         --ledger-db /tmp/ledger-db/         --peer mc://node1.prod.mobilecoinww.com/         --peer mc://node2.prod.mobilecoinww.com/         --tx-source-url https:/ledger.mobilecoinww.com/node1.prod.mobilecoinww.com/         --tx-source-url https://ledger.mobilecoinww.com/node2.prod.mobilecoinww.com/
    
  4. Import your account: Import Account

  5. Allow it to sync with the ledger. You can check status via the balance endpoint or the wallet-status endpoint.

  6. You can then list all of your Txos for that account. From this list, you hopefully will be able to see the Txo that they sent you, by matching the tx_public_key in the receipt to the Txo’s public_key field, or the tx_out_hash to the Txo’s txo_id field.

  7. Last, you can verify the proof with the confirmation_number, using the verify_proof endpoint.

2 Likes

@charles - which platform are you on, macos? We will cut a release and post the built binaries so you don’t have to build from scratch.

The desktop wallet has a Reset Your Ledger feature which I’ve tried multiple times. The transfer still doesn’t show up.

I’m using macos.

Thanks so much for the help guys! I really appreciate it.

@charles please download the full-service binary here:

https://github.com/mobilecoinofficial/full-service/releases/download/v0.0.1-pre1/full-service

And you can run it against mainnet with the following:

./full-service --wallet-db /tmp/wallet-db/wallet.db         --ledger-db /tmp/ledger-db/         --peer mc://node1.prod.mobilecoinww.com/         --peer mc://node2.prod.mobilecoinww.com/         --tx-source-url https:/ledger.mobilecoinww.com/node1.prod.mobilecoinww.com/         --tx-source-url https://ledger.mobilecoinww.com/node2.prod.mobilecoinww.com/

If you want higher bandwidth help while you’re debugging, we can follow up in DMs to set up a call!

Thanks for building that for me. I was trying to build it myself and kept running into issues.

When running the built binaries you posted I keep getting this error:

ERRO Failed getting last block from mc://node2.prod.mobilecoinww.com:443/: Operation { error: Attestation(Ake(ReportVerification(Verification(VerificationReportData { id: “129519550983131626720797625242205116695”, timestamp: “2021-01-07T16:31:45.025526”, version: 4.0, quote_status: Err(SwHardeningNeeded { pse_manifest_status: None, advisory_url: “https://security-center.intel.com”, advisory_ids: [“INTEL-SA-00334”] }), quote: Quote: { version: 2, sign_type: Linkable, epid_group_id: 00000bfe, qe_svn: 11, pce_svn: 10, xeid: 0, basename: Basename: [189, 229, 131, 126, 7, 60, 233, 42, 230, 239, 242, 210, 95, 120, 198, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], report_body: ReportBody: { cpu_svn: CpuSecurityVersion: [17, 17, 3, 5, 255, 128, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0], misc_select: 0, isv_ext_prod_id: ExtendedProductId: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], attributes: Attributes { flags: 5, xfrm: 7 }, mr_enclave: MrEnclave: [230, 109, 179, 139, 138, 67, 163, 63, 108, 22, 16, 211, 53, 163, 97, 150, 59, 178, 179, 30, 5, 106, 240, 220, 10, 137, 90, 198, 200, 87, 202, 185], mr_signer: MrSigner: [44, 26, 86, 28, 74, 182, 76, 188, 4, 191, 164, 69, 205, 247, 190, 217, 178, 173, 111, 107, 4, 211, 141, 49, 55, 243, 98, 43, 41, 253, 179, 14], config_id: ConfigId: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], isv_prod_id: 1, isv_svn: 1, config_svn: 0, isv_family_id: FamilyId: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], report_data: ReportData: [183, 8, 58, 22, 98, 181, 234, 148, 203, 99, 192, 53, 222, 72, 105, 238, 90, 181, 111, 189, 181, 56, 129, 144, 103, 51, 251, 247, 230, 186, 235, 40, 127, 59, 200, 130, 168, 69, 155, 64, 8, 251, 120, 51, 254, 193, 152, 148, 64, 75, 244, 253, 214, 84, 74, 124, 172, 202, 89, 179, 17, 244, 140, 30] }, signature_len: 0, signature: None }, revocation_reason: None, pse_manifest_status: None, pse_manifest_hash: None, platform_info_blob: None, nonce: Some(IasNonce([10, 124, 73, 111, 192, 134, 36, 159, 77, 250, 180, 219, 190, 23, 133, 168])), epid_pseudonym: Some(EpidPseudonym { b: [128, 161, 244, 117, 236, 68, 165, 135, 238, 201, 161, 160, 104, 162, 150, 152, 126, 21, 39, 202, 244, 47, 118, 159, 213, 111, 255, 167, 172, 154, 249, 102, 141, 244, 16, 37, 73, 109, 70, 143, 115, 78, 90, 250, 208, 32, 64, 50, 44, 42, 31, 221, 252, 18, 246, 153, 11, 157, 154, 216, 147, 112, 151, 64], k: [30, 106, 71, 177, 33, 65, 104, 0, 60, 90, 10, 158, 40, 121, 79, 176, 113, 167, 47, 183, 87, 147, 167, 7, 200, 66, 4, 156, 193, 192, 161, 238, 250, 41, 234, 81, 169, 16, 122, 156, 94, 3, 98, 120, 119, 202, 80, 123, 201, 75, 229, 220, 107, 158, 153, 34, 114, 164, 224, 221, 96, 247, 150, 187, 0, 0, 0, 0] }), advisory_url: Some(“https://security-center.intel.com”), advisory_ids: [“INTEL-SA-00334”] })))), total_delay: 7.15s, tries: 11 }, mc.app: full-service, mc.module: mc_ledger_sync::network_state::polling_network_state, mc.src: mobilecoin/ledger/sync/src/network_state/polling_network_state.rs:96

@drakely is this indicating the enclave at mc://node2.prod.mobilecoinww.com:443/ wasn’t set up correctly, or maybe that the wallet is trying to connect to nodes that aren’t actually valid? It’s not clear to me if INTEL-SA-00334 advisories are triggered by attribute checks or CPUSVN checks.

Apologies - I built the binary with the testnet enclave measurement :woman_facepalming: I will get that fixed up and update the release!

1 Like

Both testnet and mainnet binaries are now available here:

With the mainnet binary at: https://github.com/mobilecoinofficial/full-service/releases/download/v0.0.1-pre1/full-service-mainnet