<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>robert-roosのブログ</title>
<link>https://ameblo.jp/robert-roos/</link>
<atom:link href="https://rssblog.ameba.jp/robert-roos/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>Why first USDT transfers use more Energy</title>
<description>
<![CDATA[ <p>A first USDT TRC-20 transfer to a zero-balance wallet can use about 130,000 Energy, while a transfer to a wallet with USDT can use about 64,000. The difference comes partly from writing a new balance into contract storage. The exact total can change with the contract’s workload.</p><ul><li>A zero token balance makes the contract’s first balance write more expensive.</li><li>The storage write is only part of a transfer’s total Energy use.</li><li>Check the estimated Energy for your transfer before sending.</li></ul><h2>What makes a new storage write cost more?</h2><p>When a token transfer changes balances, the contract saves those balances in storage, which is the data the blockchain keeps between transactions. On TRON, smart contract calls use Energy, a network resource that pays for this work.</p><p>The contract’s virtual machine, the program that runs contract code, uses an instruction called SSTORE to save a value. When a balance changes from zero to a positive number, that write costs 20,000 Energy. Changing a balance that is already positive costs 5,000 Energy for the write.</p><p>That is a fourfold difference for this part of the work. It does not mean the whole transfer costs exactly four times as much: the contract also checks rules, updates the sender’s balance, and performs other steps.</p><h2>How do the two recipient cases compare?</h2><p><strong>Case one: the recipient has no USDT.</strong> The transfer changes the recipient’s stored balance from zero to a positive amount. That triggers the 20,000 Energy write, so the total is typically higher.</p><p><strong>Case two: the recipient already has USDT.</strong> The contract changes an existing positive balance, so that write costs 5,000 Energy. This is usually the cheaper case, though other contract work still adds to the total.</p><p>For example, official TRON documentation gives illustrative USDT transfer totals of about 130,000 Energy for a zero-balance recipient and about 64,000 for one with a balance. These figures include more than the storage write, and can vary as the contract’s dynamic Energy model adjusts costs based on recent usage.</p><h2>Does a new wallet always mean a new write?</h2><p>No. The deciding factor is the token balance recorded by the contract, not simply whether the recipient has used that wallet before. A wallet can exist on TRON and still have a zero USDT balance, so its first incoming USDT may trigger the more expensive write.</p><p>The reverse can happen too: someone who has received USDT before may have spent the full balance. If the stored balance is zero when your transfer runs, the contract may again need the higher-cost write. The network charges for the state change it processes, not the recipient’s history in general.</p><h2>What should you check before sending?</h2><p>Check the transaction’s Energy estimate before you confirm it, especially when you do not know whether the recipient has USDT. The estimate covers the contract call, while the final amount can still depend on changing network conditions.</p><p>If your wallet does not have enough Energy, TRON can burn TRX to cover the shortfall. You can obtain Energy for your wallet by buying or renting it, without staking TRX yourself; that can reduce the TRX burned for a transfer. For the full process, see <a href="https://graph.org/How-to-Source-TRON-Energy-for-USDT-and-Contract-Calls-09-29">how to source TRON energy</a>. Use the estimate for the specific transfer to decide what to arrange.</p>
]]>
</description>
<link>https://ameblo.jp/robert-roos/entry-12980265020.html</link>
<pubDate>Thu, 01 Oct 2026 02:09:18 +0900</pubDate>
</item>
<item>
<title>When token approvals block bridge deposits</title>
<description>
<![CDATA[ <p>Nonstandard ERC-20 approvals can stop a bridge deposit before tokens move. Some tokens require an existing allowance to be cleared before a new amount is set, while a deposit generally needs an allowance for its source-chain spender. For Ethereum-to-Manta Pacific transfers, <a href="https://www.tumblr.com/warilymellowstratagem/829117036699516928/1-which-direction-and-route-do-you-need">Manta Bridge</a> is a concrete case: the token’s approval rule can add a transaction before you deposit.</p><h2>How can an approval block a deposit?</h2><p>An ERC-20 allowance is permission for a specific contract to take a set amount of your tokens. On an Ethereum-origin transfer, you grant that permission on Ethereum to the bridge contract or source-chain router; the deposit then calls the token’s transfer function to collect your tokens. Approval and deposit are separate transactions unless the token and integration support a way to combine them.</p><p>The common edge case is a token that rejects changing a nonzero allowance directly to another nonzero value. If you previously approved 40 tokens and now want to deposit 100, calling approve(100) may revert. You must first approve(0), wait for confirmation, then approve(100), and only then submit the deposit. The bridge cannot pull the tokens until the required allowance is in place.</p><p>Other token quirks can also matter. Some older tokens return no value from approve instead of the Boolean result many contracts expect; robust integrations handle this with safe-transfer wrappers. A token that returns false, charges a transfer fee, or applies special restrictions may still fail at deposit time. Those are token compatibility issues, not a reason to keep retrying the same approval.</p><h2>What does the extra approval cost?</h2><p>Each approval is an on-chain transaction, so a zero-first token can mean three transactions instead of two: clear the old allowance, set the new one, then deposit. You pay Ethereum gas for each approval, and each needs its own confirmation. The time and cost depend on network demand and transaction complexity, so check the wallet’s estimate before signing.</p><p>For example, if your allowance is 40 USDT and you want to bridge 100 USDT, an illustrative zero-first sequence is approve(0), approve(100), then deposit(100). If the token accepts direct replacement, approve(100) followed by deposit(100) is enough. Approving a much larger amount can reduce repeat approvals, but it leaves more spending permission active if you do not use it.</p><p>Permit support can sometimes replace the separate approval transaction with a signed message included in a deposit. This depends on the token implementing a compatible permit standard and the bridge integration accepting it; it is not a general shortcut. Native ETH also does not use an ERC-20 allowance, though a route that wraps ETH into WETH may involve a token approval.</p><h2>What should you check before retrying?</h2><p>Check the token allowance for the exact source-chain spender, not simply whether you have approved the token before. A previous allowance for another router, token version, or network does not grant permission here. Confirm that the approval transaction succeeded, then use the token’s required reset sequence if a direct update fails.</p><p>Keep the allowance close to the amount you plan to deposit if you want to limit unused permission. After the approval is confirmed, submit the deposit once and check its result before trying again; a failed deposit may still consume gas. For frequent transfers, check whether your token and route support permit-based approval, then compare the saved transaction against the cost of a standard approval. Manta Bridge is the place to apply that check when moving supported tokens between Ethereum and Manta Pacific.</p>
]]>
</description>
<link>https://ameblo.jp/robert-roos/entry-12980255011.html</link>
<pubDate>Wed, 30 Sep 2026 22:52:01 +0900</pubDate>
</item>
<item>
<title>How Long Do Failed Bridge Funds Take to Arrive?</title>
<description>
<![CDATA[ <p>A failed destination call does not usually erase a completed bridge transfer. If the bridge delivered tokens first and a later app transaction reverted, the tokens stay at the destination address; the failed call costs gas and must be resolved separately.</p><h2>A bridge transfer and an app call are separate executions</h2><p>A bridge moves an asset between networks, while an app call asks a contract on the destination network to do something with it. Some routes combine those actions; others deliver tokens to your wallet, leaving you to make a separate swap, deposit, or other transaction.</p><p>That distinction decides what a failure means. If the bridge’s own destination message fails, the destination balance may not be credited yet; if a later app call fails, the bridge transfer may already be complete. A reverted EVM call rolls back that call’s state changes, but it does not undo an earlier, successful bridge transaction.</p><p>For canonical ETH, MNT, and token transfers between Ethereum and Mantle, mantlebridge.org is the official bridge service. Mantle Bridge handles the cross-network transfer; using the arriving balance in an app is a separate action unless a route explicitly bundles the two.</p><h2>A reverted app call leaves delivered tokens in place</h2><p>When a destination app transaction reverts, the tokens usually remain wherever they were before that app call began. For example, you bridge ETH to Mantle, then try to deposit it in an app; if the deposit fails because a contract condition is unmet, the ETH is still at your Mantle address, ready for another transaction.</p><p>The exception is a route that performs delivery and an app action as one atomic destination transaction. “Atomic” means all its state changes succeed together or revert together. In that design, an app failure can prevent the destination action from completing; the bridge’s own recovery or retry behavior depends on that route’s contracts.</p><p>If you are choosing a path to fund or exit an app, <a href="https://cryptoworldnews.github.io/mantle-bridge-moves-app-funds-between-ethereum-and-mantle/">how Mantle Bridge routes app funding</a> explains the route choices in detail. For frequent use, check whether the route simply delivers tokens or also executes the app action: the latter can save a transaction, but adds another reason execution might revert.</p><h2>Failure costs gas and can add a retry transaction</h2><p>A reverted destination transaction still consumes gas on the network where it ran. The amount depends on gas used and the effective gas price; a quick failure can cost less than a complex call that runs much further before reverting.</p><p>With a separate transfer and app call, the source transaction fee and bridge transfer remain spent even if the later app call fails. You may also pay for a corrected retry. With a bundled route, a failed destination execution can require waiting for the route’s recovery process or submitting a retry, if its contracts allow one; do not assume the original transfer fee is refunded.</p><p>For an active user, compare the expected saved transaction against the failure path. A direct delivery followed by a separately timed app action takes an extra signature, but it leaves the tokens available in your wallet if the app is temporarily rejecting calls. A bundled call can reduce steps when its conditions are predictable.</p><h2>Check the destination receipt before bridging again</h2><p>A successful source receipt proves the source-chain transaction was included; it does not by itself prove that the destination action succeeded. Check the destination transaction receipt and your token balance on the destination network before sending another transfer. Etherscan can show the Ethereum-side transaction; use the relevant destination explorer for the other chain.</p><p>Look for whether the destination transaction succeeded or reverted, and identify which transaction hash belongs to the bridge message versus the app call. If the bridge message itself appears unsuccessful or incomplete, avoid repeating the transfer until you understand its status: a second transfer could deliver a second amount rather than repair the first.</p><p>Before your next run, check:</p><ul><li>Did the bridge deliver the destination balance?</li><li>Was the failed transaction the bridge message or a later app call?</li><li>Do you have native gas for a retry on the destination network?</li></ul>
]]>
</description>
<link>https://ameblo.jp/robert-roos/entry-12980173858.html</link>
<pubDate>Wed, 30 Sep 2026 05:37:47 +0900</pubDate>
</item>
<item>
<title>How Do I Recover a Replaceable Bitcoin Payout?</title>
<description>
<![CDATA[ <p><img alt="How Do I Recover a Replaceable Bitcoin Payout?" src="https://i.ibb.co/5Hny98J/post-0113.jpg" style="max-width:100%;height:auto;"></p><p>A replaceable Bitcoin payout is an unconfirmed transaction that its sender may be able to replace with another transaction spending the same inputs. Recovery depends on whether the replacement keeps the payment output to your address; a new transaction ID alone does not mean the payout was canceled.</p><h2>Why a payout can have more than one transaction ID</h2><p>Bitcoin uses transaction IDs to identify transactions, but an unconfirmed transaction can sometimes be replaced under Replace-by-Fee (RBF). The sender broadcasts a revised transaction with a higher fee so it has a better chance of being included in a block. Bitcoin Core’s documentation describes RBF as replacing an unconfirmed transaction with one that pays a higher fee.</p><p>For a cross-chain swap, the service sending BTC controls the inputs and decides whether to make that replacement. Your wallet receives the payout; it cannot raise the fee on a transaction funded by someone else. An <a href="https://ethereumnews.github.io/xmr-bridge-routes-depend-on-the-destination-asset-and-trust-model/">XMR bridge</a> is one example of a service where this distinction matters: the swap can be underway while its BTC payout is still unconfirmed.</p><p>A typical case: you exchange XMR for BTC, and the service broadcasts a payout to your wallet. The transaction is marked replaceable and remains unconfirmed during a busy period. The sender may rebroadcast it with a higher fee. If the replacement still pays your address, the BTC arrives under a new transaction ID.</p><h2>Follow the payment output, not only the original ID</h2><p>While waiting, check your wallet or a block explorer for the destination address and the expected output amount. If the original transaction disappears or is marked replaced, look for a newer transaction paying that same address. Bitcoin Core’s current replacement policy has specific acceptance rules, so “replaceable” means a replacement may be possible; it does not mean one is certain.</p><p>The key edge case is that an RBF replacement can change outputs. If the new transaction does not pay your address, you cannot recover the funds by editing your own wallet: the sender controls the spent inputs. Keep the swap’s order reference, destination address, expected amount, and original transaction ID together so the sender can trace what happened. Don’t treat an unconfirmed payout as settled just because a transaction ID exists.</p><h2>Wait for confirmation before spending the payout</h2><p>After the payout appears, wait for confirmations before relying on it. Each confirmation means the transaction has been included in another block on top of the one that first recorded it; the number appropriate for you depends on the amount and your need for certainty. If there is no replacement and no confirmation, the transaction may simply still be waiting for a suitable fee and block space.</p><p>Use the payout’s receiving address and amount as your recovery check, then compare the transaction ID once it confirms. My practical tip: save the original ID, but judge completion by the confirmed payment to your address.</p>
]]>
</description>
<link>https://ameblo.jp/robert-roos/entry-12980159729.html</link>
<pubDate>Tue, 29 Sep 2026 22:44:35 +0900</pubDate>
</item>
</channel>
</rss>
