<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>BuiltonEVM</title>
        <link>https://paragraph.com/@builtonEVM</link>
        <description>Simplifying the crypto experience for everyone.</description>
        <lastBuildDate>Tue, 19 May 2026 15:50:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>BuiltonEVM</title>
            <url>https://storage.googleapis.com/papyrus_images/c6c8078a03b7786484fafd1fdeb47a65.jpg</url>
            <link>https://paragraph.com/@builtonEVM</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[API Wrapper vs Direct Smart Contract Interaction]]></title>
            <link>https://paragraph.com/@builtonEVM/api-wrapper-vs-direct-smart-contract-interaction</link>
            <guid>30zxRIi5MrjHRC06c6tN</guid>
            <pubDate>Fri, 26 Sep 2025 21:27:52 GMT</pubDate>
            <description><![CDATA[P.S: This is a follow-up to our previous article Completing the Application StackIntroductionWeb3 app implementations sometimes present their own dilemma: whether to interact directly with smart contracts or use API wrappers. In this talk, we’ll cover both approaches, using a real-world example to illustrate their implications for developers and end-users alike.Hybrid Decentralisation vs Centralisation The idea of hybrid decentralisation is the ability to mirror the user experience of regular...]]></description>
            <content:encoded><![CDATA[<p><strong>P.S:</strong> <strong>This is a follow-up to our previous article </strong><a target="_blank" rel="noreferrer nofollow noopener" class="dont-break-out attrlink" href="https://paragraph.com/@builtonevm/completing-the-application-stack"><strong>Completing the Application Stack</strong></a></p><h2 id="h-introduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Introduction</h2><p>Web3 app implementations sometimes present their own dilemma: whether to interact directly with smart contracts or use API wrappers. In this talk, we’ll cover both approaches, using a real-world example to illustrate their implications for developers and end-users alike.</p><h2 id="h-hybrid-decentralisation-vs-centralisation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Hybrid Decentralisation vs Centralisation&nbsp;</h2><p>The idea of hybrid decentralisation is the ability to mirror the user experience of regular centralised apps, but implemented using decentralised technologies. Let’s explore an example to implement off-ramp logic.</p><p><strong>Smart contact Integration</strong></p><p><strong>Wallet infra (Privy): </strong>Using privy ensures that contract interactions on the front-end are gasless through it’s paymaster, and users don’t have to manually approve token spend from their wallet or sign transactions. It just happens in the background, similar to the way transactions happen on a centralised exchange.</p><pre data-type="codeBlock" text="&nbsp;const createOrder = async () => {

&nbsp; &nbsp; try {
&nbsp; &nbsp; &nbsp; &nbsp; // Smart wallet

&nbsp; &nbsp; &nbsp; &nbsp; if (!client) {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw new Error(&quot;Smart wallet not found&quot;);

&nbsp; &nbsp; &nbsp; &nbsp; }




&nbsp; &nbsp; &nbsp; &nbsp; await client.switchChain({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: selectedNetwork.chain.id,

&nbsp; &nbsp; &nbsp; &nbsp; });




&nbsp; &nbsp; &nbsp; &nbsp; const params = await prepareCreateOrderParams();

&nbsp; &nbsp; &nbsp; &nbsp; setCreatedAt(new Date().toISOString());




&nbsp; &nbsp; &nbsp; &nbsp; await client.sendTransaction({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; calls: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Approve gateway contract to spend token

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to: tokenAddress,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data: encodeFunctionData({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; abi: erc20Abi,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; functionName: &quot;approve&quot;,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; args: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getGatewayContractAddress(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedNetwork.chain.name,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ) as 0x${string},

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parseUnits(amountSent.toString(), tokenDecimals ?? 18),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Create order

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to: getGatewayContractAddress(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedNetwork.chain.name,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ) as 0x${string},

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data: encodeFunctionData({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; abi: gatewayAbi,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; functionName: &quot;createOrder&quot;,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; args: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.token,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.amount,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.rate,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.senderFeeRecipient,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.senderFee,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.refundAddress ?? &quot;&quot;,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.messageHash,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; &nbsp;&nbsp;




&nbsp; &nbsp; &nbsp; await getOrderId();




&nbsp; &nbsp; &nbsp; toast.success(&quot;Order created successfully&quot;);




&nbsp; &nbsp; &nbsp; refreshBalance();




&nbsp; &nbsp; &nbsp; trackEvent(&quot;Swap started&quot;, {

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Entry point&quot;: &quot;Transaction preview&quot;,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Wallet type&quot;: &quot;Smart wallet&quot;,

&nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; } catch (e) {

&nbsp; &nbsp; &nbsp; const error = e as BaseError;

&nbsp; &nbsp; &nbsp; setErrorMessage(error.shortMessage || error.message);

&nbsp; &nbsp; &nbsp; setIsConfirming(false);

&nbsp; &nbsp; &nbsp; trackEvent(&quot;Swap Failed&quot;, {

&nbsp; &nbsp; &nbsp; &nbsp; Amount: amountSent,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Send token&quot;: token,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Receive currency&quot;: currency,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Recipient bank&quot;: getInstitutionNameByCode(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; institution,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; supportedInstitutions,

&nbsp; &nbsp; &nbsp; &nbsp; ),

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Wallet balance&quot;: balance,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Swap date&quot;: createdAt,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Reason for failure&quot;: error.shortMessage || error.message,

&nbsp; &nbsp; &nbsp; &nbsp; &quot;Transaction duration&quot;: calculateDuration(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createdAt,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Date().toISOString(),

&nbsp; &nbsp; &nbsp; &nbsp; ),

&nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; }

&nbsp; };

"><code>&nbsp;const createOrder <span class="hljs-operator">=</span> async () <span class="hljs-operator">=</span><span class="hljs-operator">&gt;</span> {

&nbsp; &nbsp; <span class="hljs-keyword">try</span> {
&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-comment">// Smart wallet</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-keyword">if</span> (<span class="hljs-operator">!</span>client) {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">"Smart wallet not found"</span>);

&nbsp; &nbsp; &nbsp; &nbsp; }




&nbsp; &nbsp; &nbsp; &nbsp; await client.switchChain({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: selectedNetwork.chain.id,

&nbsp; &nbsp; &nbsp; &nbsp; });




&nbsp; &nbsp; &nbsp; &nbsp; const params <span class="hljs-operator">=</span> await prepareCreateOrderParams();

&nbsp; &nbsp; &nbsp; &nbsp; setCreatedAt(<span class="hljs-keyword">new</span> Date().toISOString());




&nbsp; &nbsp; &nbsp; &nbsp; await client.sendTransaction({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; calls: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-comment">// Approve gateway contract to spend token</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to: tokenAddress,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data: encodeFunctionData({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-built_in">abi</span>: erc20Abi,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; functionName: <span class="hljs-string">"approve"</span>,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; args: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getGatewayContractAddress(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedNetwork.chain.<span class="hljs-built_in">name</span>,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ) <span class="hljs-keyword">as</span> 0x${<span class="hljs-keyword">string</span>},

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parseUnits(amountSent.toString(), tokenDecimals ?? <span class="hljs-number">18</span>),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-comment">// Create order</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; to: getGatewayContractAddress(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selectedNetwork.chain.<span class="hljs-built_in">name</span>,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ) <span class="hljs-keyword">as</span> 0x${<span class="hljs-keyword">string</span>},

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data: encodeFunctionData({

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-built_in">abi</span>: gatewayAbi,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; functionName: <span class="hljs-string">"createOrder"</span>,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; args: [

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.token,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.amount,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.rate,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.senderFeeRecipient,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.senderFee,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.refundAddress ?? <span class="hljs-string">""</span>,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.messageHash,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }),

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],

&nbsp; &nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; &nbsp;&nbsp;




&nbsp; &nbsp; &nbsp; await getOrderId();




&nbsp; &nbsp; &nbsp; toast.success(<span class="hljs-string">"Order created successfully"</span>);




&nbsp; &nbsp; &nbsp; refreshBalance();




&nbsp; &nbsp; &nbsp; trackEvent(<span class="hljs-string">"Swap started"</span>, {

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Entry point"</span>: <span class="hljs-string">"Transaction preview"</span>,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Wallet type"</span>: <span class="hljs-string">"Smart wallet"</span>,

&nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; } <span class="hljs-keyword">catch</span> (e) {

&nbsp; &nbsp; &nbsp; const <span class="hljs-function"><span class="hljs-keyword">error</span> = <span class="hljs-title">e</span> <span class="hljs-title"><span class="hljs-keyword">as</span></span> <span class="hljs-title">BaseError</span></span>;

&nbsp; &nbsp; &nbsp; setErrorMessage(<span class="hljs-keyword">error</span>.shortMessage <span class="hljs-operator">|</span><span class="hljs-operator">|</span> <span class="hljs-keyword">error</span>.message);

&nbsp; &nbsp; &nbsp; setIsConfirming(<span class="hljs-literal">false</span>);

&nbsp; &nbsp; &nbsp; trackEvent(<span class="hljs-string">"Swap Failed"</span>, {

&nbsp; &nbsp; &nbsp; &nbsp; Amount: amountSent,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Send token"</span>: token,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Receive currency"</span>: currency,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Recipient bank"</span>: getInstitutionNameByCode(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; institution,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; supportedInstitutions,

&nbsp; &nbsp; &nbsp; &nbsp; ),

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Wallet balance"</span>: balance,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Swap date"</span>: createdAt,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Reason for failure"</span>: <span class="hljs-keyword">error</span>.shortMessage <span class="hljs-operator">|</span><span class="hljs-operator">|</span> <span class="hljs-keyword">error</span>.message,

&nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-string">"Transaction duration"</span>: calculateDuration(

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; createdAt,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="hljs-keyword">new</span> Date().toISOString(),

&nbsp; &nbsp; &nbsp; &nbsp; ),

&nbsp; &nbsp; &nbsp; });

&nbsp; &nbsp; }

&nbsp; };

</code></pre><p><strong>Code source: &nbsp;</strong><a target="_blank" rel="noreferrer nofollow noopener" class="dont-break-out dynamiclink" href="https://github.com/paycrest/noblocks/blob/main/app/pages/TransactionPreview.tsx"><strong>https://github.com/paycrest/noblocks/blob/main/app/pages/TransactionPreview.tsx</strong></a></p><h2 id="h-api" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">API</h2><p>APIs serve as a connecting layer that simplifies interactions between applications and underlying systems. In the context of web3, APIs enable developers to interact with smart contracts while abstracting the complexity of protocols. This abstraction layer enhances usability, reduces development time, and ensures a more seamless integration of functionalities into applications.</p><br><pre data-type="codeBlock" text="// First, fetch the current rate

const rate = await fetchRate(&quot;USDT&quot;, 100, &quot;NGN&quot;, &quot;base&quot;);




// Then create the payment order with the fetched rate

const orderData = {

&nbsp; amount: 100,

&nbsp; token: 'USDT',

&nbsp; network: 'base',

&nbsp; rate: rate, // Use the fetched rate

&nbsp; recipient: {

&nbsp; &nbsp; institution: 'GTB',

&nbsp; &nbsp; accountIdentifier: '1234567890',

&nbsp; &nbsp; accountName: 'John Doe',

&nbsp; &nbsp; currency: 'NGN',

&nbsp; &nbsp; memo: 'Salary payment for January 2024' // Optional: Purpose/narration for the payment

&nbsp; },

&nbsp; reference: 'payment-123',

&nbsp; returnAddress: '0x1234567890123456789012345678901234567890'

};




const response = await fetch(&quot;https://api.paycrest.io/v1/sender/orders&quot;, {

&nbsp; method: &quot;POST&quot;,

&nbsp; headers: {

&nbsp; &nbsp; &quot;API-Key&quot;: &quot;YOUR_API_KEY&quot;,

&nbsp; &nbsp; &quot;Content-Type&quot;: &quot;application/json&quot;

&nbsp; },

&nbsp; body: JSON.stringify(orderData)

});




const order = await response.json();

console.log('Order created:', order);




// The response includes important information

const {

&nbsp; id, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Order ID for tracking

&nbsp; receiveAddress, &nbsp;// Address to send tokens to

&nbsp; validUntil, &nbsp; &nbsp; &nbsp;// Expiration time

&nbsp; senderFee, &nbsp; &nbsp; &nbsp; // Fee amount

&nbsp; transactionFee &nbsp; // Network transaction fee

} = order;

"><code><span class="hljs-comment">// First, fetch the current rate</span>

const rate <span class="hljs-operator">=</span> await fetchRate(<span class="hljs-string">"USDT"</span>, <span class="hljs-number">100</span>, <span class="hljs-string">"NGN"</span>, <span class="hljs-string">"base"</span>);




<span class="hljs-comment">// Then create the payment order with the fetched rate</span>

const orderData <span class="hljs-operator">=</span> {

&nbsp; amount: <span class="hljs-number">100</span>,

&nbsp; token: <span class="hljs-string">'USDT'</span>,

&nbsp; network: <span class="hljs-string">'base'</span>,

&nbsp; rate: rate, <span class="hljs-comment">// Use the fetched rate</span>

&nbsp; recipient: {

&nbsp; &nbsp; institution: <span class="hljs-string">'GTB'</span>,

&nbsp; &nbsp; accountIdentifier: <span class="hljs-string">'1234567890'</span>,

&nbsp; &nbsp; accountName: <span class="hljs-string">'John Doe'</span>,

&nbsp; &nbsp; currency: <span class="hljs-string">'NGN'</span>,

&nbsp; &nbsp; memo: <span class="hljs-string">'Salary payment for January 2024'</span> <span class="hljs-comment">// Optional: Purpose/narration for the payment</span>

&nbsp; },

&nbsp; reference: <span class="hljs-string">'payment-123'</span>,

&nbsp; returnAddress: <span class="hljs-string">'0x1234567890123456789012345678901234567890'</span>

};




const response <span class="hljs-operator">=</span> await fetch(<span class="hljs-string">"https://api.paycrest.io/v1/sender/orders"</span>, {

&nbsp; method: <span class="hljs-string">"POST"</span>,

&nbsp; headers: {

&nbsp; &nbsp; <span class="hljs-string">"API-Key"</span>: <span class="hljs-string">"YOUR_API_KEY"</span>,

&nbsp; &nbsp; <span class="hljs-string">"Content-Type"</span>: <span class="hljs-string">"application/json"</span>

&nbsp; },

&nbsp; body: JSON.stringify(orderData)

});




const order <span class="hljs-operator">=</span> await response.json();

console.log(<span class="hljs-string">'Order created:'</span>, order);




<span class="hljs-comment">// The response includes important information</span>

const {

&nbsp; id, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="hljs-comment">// Order ID for tracking</span>

&nbsp; receiveAddress, &nbsp;<span class="hljs-comment">// Address to send tokens to</span>

&nbsp; validUntil, &nbsp; &nbsp; &nbsp;<span class="hljs-comment">// Expiration time</span>

&nbsp; senderFee, &nbsp; &nbsp; &nbsp; <span class="hljs-comment">// Fee amount</span>

&nbsp; transactionFee &nbsp; <span class="hljs-comment">// Network transaction fee</span>

} <span class="hljs-operator">=</span> order;

</code></pre><p><strong>Code source: </strong><a target="_blank" rel="noreferrer nofollow noopener" class="dont-break-out dynamiclink" href="https://docs.paycrest.io/implementation-guides/sender-api-integration"><strong>https://docs.paycrest.io/implementation-guides/sender-api-integration</strong></a></p><br><p><strong>Community</strong></p><p>A builders' community &nbsp;with the goal is to make crypto usable for everyone.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5aa8aa37c229725eb6cc232d4bd31d95775c1f67a31e6895aecb09d9e67f2dbe.svg" blurdataurl="data:image/png;base64,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" nextheight="500" nextwidth="500" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><br>]]></content:encoded>
            <author>builtonevm@newsletter.paragraph.com (BuiltonEVM)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1c23adb0b71baadd504b25abd7cdd6fe4f5d9331818eeceefbe1f0be7067a51b.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Completing the Application Stack]]></title>
            <link>https://paragraph.com/@builtonEVM/completing-the-application-stack</link>
            <guid>Douh1ixl75YlShrmMuys</guid>
            <pubDate>Fri, 29 Aug 2025 09:53:46 GMT</pubDate>
            <description><![CDATA[Back StoryOver the last few years, successful applications in web3 have primarily focused on DeFi protocols, largely due to heavy incentivization and hyper-financialization. This had a ripple effect in terms of wealth transfer, scams, and smart contract hacks (check out: https://www.web3isgoinggreat.com/). This led to people calling it the “wild wild west”. Out of this entire defi protocol chaos, we found winners. These winners include protocols we are all conversant with today, like: AaveCom...]]></description>
            <content:encoded><![CDATA[<h2 id="h-back-story" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Back Story</h2><p>Over the last few years, successful applications in web3 have primarily focused on DeFi protocols, largely due to heavy incentivization and hyper-financialization. This had a ripple effect in terms of wealth transfer, scams, and smart contract hacks (check out: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.web3isgoinggreat.com/">https://www.web3isgoinggreat.com/</a>).&nbsp;</p><p>This led to people calling it the “wild wild west”. &nbsp;</p><p>Out of this entire defi protocol chaos, we found winners. These winners include protocols we are all conversant with today, like: &nbsp;</p><ol><li><p>Aave</p></li><li><p>Compound</p></li><li><p>Uniswap</p></li><li><p>Cowswap</p></li><li><p>Curve Finance</p></li><li><p>Morpho</p></li><li><p>1inch</p></li><li><p>Balancer</p></li><li><p>Euler</p></li><li><p>Tether</p></li><li><p>Circle</p></li></ol><h2 id="h-technical-scope" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Technical Scope&nbsp;</h2><p><strong>What does this mean technically?</strong></p><p>For engineers and founders, this means the winners have sort of emerged. There are always exceptions to the rule, but the meta has now moved from smart contract protocols to the application stack. Meaning there’s no point battling against time-tested protocols that have gained the trust of defi users, and it’s time to compete on the application stack.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ae8f0c99d5b24fb7e788895ee31ff9e1.png" blurdataurl="data:image/png;base64,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" nextheight="1296" nextwidth="1184" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This means we need to develop app use cases on top of existing protocols and create an experience similar to regular fintech apps. This means we have to use the existing UX tooling that makes this possible.</p><p>For instance, users should be able to log in using privy, dynamic, thirdweb, or any other wallet infra tooling that helps users authenticate and authorize transactions. These infras allow the users to log in with Google, provide them a wallet with social recovery, keep all interaction gasless, while the users might not even know they’re on-chain.</p><p>For defi protocols, we have to abstract and combine the functionality of existing protocols to create features that are usable to regular users. A good way to think about app use-cases this from first principles and accessibility.</p><p>What does this mean? This means you have to take the protocols that you need and water it down to build apps that solve basic financial alternatives to what currently exists. This means you should think about features from the POV of outcomes rather than technology.</p><p>So, when you think about lending, for example, don’t just ask your users to bring whatever crypto asset collateral and give them stablecoins or fiat. Think about it from the POV of how lending is done currently for SMEs and individuals, and how I can adopt that into the app use-case. This includes using tooling like ramps, off-chain verification, disbursement, and funds collection through open banking.</p><p>This same thing applies to things like yield-bearing protocols. Can you create features like flash loans that allow regular people to fulfil individual on/off ramp transactions, after which, their funds are returned with a little profit. After an entire year, all that profit comes together to form the APY.</p><p>So, we have to build a hybrid system that’s better and can be replicated across regions because crypto is global by default.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1b4a3aaeed6eeaa9c796a62213b85204.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAIAAACMdijuAAAACXBIWXMAABYlAAAWJQFJUiTwAAACeklEQVR4nLWSy27TQBSGJ3ZtpxFpnDqZccbJ2M44Ht9qW76qdtqg0ldgyRvwJux5At4BoXIpqLwEYgFUSLBlA2JT5LgKLSqIBXyL0fjMjM9/zvkBGQ1Xtl3SmeN5SZKU5X4ch3aU9Yq7HY4Df6TT6QAAKKUnz0+fvjh9efb62auzx09OTNOUZRkAIEoSWKXJx0cPHt6/t2BOvTxIszJJUzdKb7H9ziVc5zfwPA8AWC6X3y8u3rw7//Dp89v351++fqvqGiEkCEK32wUAcMfRnqooAABJ6oqiKAiCJEmSuAX+mn6/ryiKLMuqqu7s7GzioiiB3d1dMp87rscY8zzPtu3A9xljhOiWZUVJ4nqeaZqMMcMwXNcNggBj7LiuZVmu64ZhyBwHIWTbNmOsldzWd5lgMBjoRJ9OZ5o2nU6nut78lxAyHo9VVdUNQ1uDMYYQYowN0xgMZAjhZDIxDMM0TaxpECFd101zvr29fbWyJgHHNS3mOI7n+XbfSmj721kftZ/tynGcIIrNKghtpN3c2LomAaU0y/M0Teu6Xq1u53mR53mUJFGSZFmW53ld11mW3Tk+rqrK94Ojo6MkSau6TtK0qqosyw5Xqzwv+v1+M8+1mmst2rhtI3Zz6ap27vrLNviLnW6uQJZlhBBsQJMJNkxTVVWIEMbaaDxWJxOMNUopQoisgRASQkaj0XA4HI3HEMLFYtFOCKnqdDYjhCiKgjEWGkSAMS7LfcdxGv8EoR8Enuelabaw7YVt70VRGEZFUTiOE8cxpdR13SiKKJ0zxuy1dQ4ODy3LYo7TeqwoyziOfT/o9Xo8vwUQUsuyhAhtevUP+TmD/0Gb4AeqrGjxqsk9QgAAAABJRU5ErkJggg==" nextheight="438" nextwidth="1184" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-distribution-scope" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Distribution Scope</h2><p>One thing about apps is that your users are what make it relevant. This is where <strong>distribution</strong> comes into play. The hack is creating <strong>interoperability </strong>between regular fintechs and defi protocols through APIs, NPM packages, etc. Besides building the app and serving customers directly, we have to enable web2-inclined integration points. Plus, the API product categories must be similar.</p><h2 id="h-use-cases" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Use cases</h2><ul><li><p>Dialect Blinks</p></li><li><p>Blockradar and stablecoins</p></li><li><p>Maplerad</p></li></ul><br>]]></content:encoded>
            <author>builtonevm@newsletter.paragraph.com (BuiltonEVM)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/3be0e0578d4121aa548508db6d35cc3f.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Home for EVM builders]]></title>
            <link>https://paragraph.com/@builtonEVM/home-for-evm-builders</link>
            <guid>hv9Nucwpk90yivoLcx4Q</guid>
            <pubDate>Mon, 02 Jun 2025 06:16:33 GMT</pubDate>
            <description><![CDATA[The goal is to make crypto usable for everyone. This is not just another attempt to market Ethereum. It’s us creating a melting pot for apps, protocols, and UX/DX tooling providers to build the right products for global users. This is home for EVM builders.]]></description>
            <content:encoded><![CDATA[<p>&nbsp;The goal is to make crypto usable for everyone. For as long as we can remember, devs building in web3 and their users have to jump through hoops and obstacles to interact with the technology. From users dealing with gas fees, switching chains, and complex wallet addresses to developers finding it difficult to obtain tokens from faucets, poor documentation, fragmented liquidity, and testing issues, among others.</p><p>Now, with the advancement of UX tooling in crypto, including smart accounts and identity infrastructure (ENS), as well as DX tooling like simulation engines and virtual testnets, the EVM is poised to accommodate apps that can solve real-life problems.&nbsp;</p><p>Public goods organisations like Gitcoin and Giveth have funded hundreds if not thousands of open-source and regenerative projects. The EVM space has experimented with multiple allocation methodologies, retrofunding, quadratic funding, and streamable tokens and this is just the beginning. There’s so much more value to capture. From DAOs to on-chain organizations, from finance to coordination, verification, privacy, etc.&nbsp; </p><p>Stablecoins has shown us a taste of what crypto and PMF can feel like when we solve the day-to-day problems of regular people living around the world with varying levels of opportunities and access.&nbsp;</p><p>With the right guidance and thought process, builders can build everyday products that users can use without struggle, and not reinforce CT echo chambers. This is an attempt to provide builders with the right thought framework to come up with great app ideas and distribute applications to actual users.&nbsp;</p><p>To start with, we'll be highlighting projects that are more inclined to onboard not just web3 natives, but the masses and new developers with better UX/DX. Think folks like Polymarket, Privy, Glider, etc.&nbsp;</p><p>This is not just another attempt to market Ethereum. It's us creating a melting pot for apps, protocols, and UX/DX tooling providers to build the right products for global users. This is home for EVM builders.</p><br><p>Come home: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/builtonEVM">https://x.com/builtonEVM</a></p><p><br><br><br></p>]]></content:encoded>
            <author>builtonevm@newsletter.paragraph.com (BuiltonEVM)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c501c73289c8899a4958cbdf578d71e6.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>