CINXE.COM
Cadence – Secure Smart Contract Language for Flow
<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Fri Apr 04 2025 15:48:26 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="flow.com" data-wf-page="67e5921ff16d27f9f5ced840" data-wf-site="5f734f4dbd95382f4fdfa0ea" lang="en"><head><meta charset="utf-8"/><title>Cadence – Secure Smart Contract Language for Flow</title><meta content="Build safer, scalable smart contracts with Cadence 1.0 — Flow’s resource-oriented programming language designed for security, composability, and UX." name="description"/><meta content="Cadence – Secure Smart Contract Language for Flow" property="og:title"/><meta content="Build safer, scalable smart contracts with Cadence 1.0 — Flow’s resource-oriented programming language designed for security, composability, and UX." property="og:description"/><meta content="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/67e592cf7b0e61c4d9b0bacf_og-cadence-page.png" property="og:image"/><meta content="Cadence – Secure Smart Contract Language for Flow" property="twitter:title"/><meta content="Build safer, scalable smart contracts with Cadence 1.0 — Flow’s resource-oriented programming language designed for security, composability, and UX." property="twitter:description"/><meta content="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/67e592cf7b0e61c4d9b0bacf_og-cadence-page.png" property="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="goOrjM0FiQtmK2lUJ9Y5NpPJA-fMUUc_6Q6Vmd7-XIY" name="google-site-verification"/><meta content="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/css/flow-com.webflow.1a0d4a6d9.min.css" rel="stylesheet" type="text/css"/><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/616b1520779838b5f9174363_favicon.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/616b1548fd01d005fc2bc2c7_logo256.png" rel="apple-touch-icon"/><link href="https://flow.com/cadence" rel="canonical"/><style> .w-webflow-badge { display: none !important; } </style> <!-- Google Tag Manager -- Managed by Fernando --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MKNRTMBS');</script> <!-- End Google Tag Manager --> <!-- Customer.io Source --> <script> !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdp.customer.io/v1/analytics-js/snippet/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._writeKey=key;analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.15.3"; analytics.load("bcf877cb5e139c0980dc"); analytics.page(); }}(); </script> <meta name="facebook-domain-verification" content="dhlb5fcuitl7owilmsg6xh307ohoyc" /> <meta name="google-site-verification" content="X9Zy6GZWHtTYhYMFuXTQe0bhDgNud-rh69tz47fEWpc" /> <meta property="og:url" content="https://flow.com/cadence"></head><body><div class="w-embed w-iframe"><!-- Google Tag Manager (noscript) - Managed by Fernando --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MKNRTMBS" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --></div><div class="page-wrapper iss--bg-gray-50"><div class="nav-absolute"><div class="top-bar_component"><section class="banner10_component is--rewards"><div class="padding-global"><div class="banner10_content-wrapper"><div class="banner10_content"><div class="text-weight-medium">Build with AI – Add Flow’s knowledge base to Cursor and start building faster than ever. <a href="https://developers.flow.com/tutorials/ai-plus-flow?utm_source=flow.com&utm_medium=referral&utm_campaign=ai_plus_flow_promo" target="_blank" class="link-gradient-rewards">Learn more.</a></div></div><a aria-label="Hide Notification Bar" data-w-id="0eaad23c-eb64-7ba8-eec9-52106c88f2f8" href="#" class="banner10_close-button is-white w-inline-block"><div aria-hidden="true" class="icon-embed-small w-embed"><svg width="100%" height="100%" viewBox="0 0 32 33" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M22.8354 22.864L22.3639 23.3354C22.1036 23.5957 21.6815 23.5957 21.4211 23.3354L16 17.9142L10.5788 23.3353C10.3185 23.5957 9.89638 23.5957 9.63603 23.3353L9.16462 22.8639C8.90427 22.6036 8.90427 22.1815 9.16462 21.9211L14.5858 16.5L9.16462 11.0788C8.90427 10.8185 8.90427 10.3964 9.16462 10.136L9.63602 9.66463C9.89637 9.40428 10.3185 9.40428 10.5788 9.66463L16 15.0858L21.4211 9.66462C21.6815 9.40427 22.1036 9.40427 22.3639 9.66462L22.8354 10.136C23.0957 10.3964 23.0957 10.8185 22.8354 11.0788L17.4142 16.5L22.8354 21.9211C23.0957 22.1815 23.0957 22.6036 22.8354 22.864Z" fill="currentColor"/> </svg></div></a></div></div></section></div><div data-w-id="8f920117-d18e-1758-05f7-b4e78e006560" data-animation="default" data-collapse="medium" data-duration="400" data-easing="ease" data-easing2="ease" role="banner" class="navigation w-nav is--transparent"><div class="nav-container w-container"><a href="https://flow.com/" class="nav-logo-div w-nav-brand"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63ce603ae36f46f6bb67e51e_flow-logo.svg" alt="flow logo" class="hide"/><div aria-label="Flow logo" class="nav-logo__embed w-embed"><svg width="100" height="42" viewBox="0 0 100 42" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="21" cy="21" r="21" fill="#00EF8B"></circle> <path d="M29.9732 17.7422H24.0898V23.6255H29.9732V17.7422Z" fill="white"></path> <path d="M18.2138 25.8297C18.2138 26.2665 18.0843 26.6934 17.8416 27.0566C17.599 27.4197 17.2541 27.7028 16.8506 27.8699C16.447 28.0371 16.003 28.0808 15.5746 27.9956C15.1463 27.9104 14.7528 27.7001 14.4439 27.3912C14.1351 27.0824 13.9248 26.6889 13.8396 26.2605C13.7544 25.8321 13.7981 25.3881 13.9652 24.9846C14.1324 24.5811 14.4154 24.2362 14.7786 23.9935C15.1417 23.7509 15.5687 23.6214 16.0055 23.6214H18.2138V17.7422H16.0055C14.4059 17.7422 12.8423 18.2165 11.5123 19.1052C10.1823 19.9939 9.14572 21.2569 8.5336 22.7347C7.92147 24.2125 7.76131 25.8387 8.07337 27.4075C8.38543 28.9763 9.15569 30.4174 10.2867 31.5484C11.4178 32.6795 12.8589 33.4497 14.4277 33.7618C15.9965 34.0738 17.6226 33.9137 19.1004 33.3016C20.5782 32.6894 21.8413 31.6528 22.73 30.3229C23.6186 28.9929 24.093 27.4292 24.093 25.8297V23.6214H18.2138V25.8297Z" fill="white"></path> <path d="M26.2984 14.8003H32.9151V8.91699H26.2984C24.1542 8.91919 22.0984 9.77198 20.5821 11.2882C19.0659 12.8044 18.2131 14.8602 18.2109 17.0044V17.7419H24.0901V17.0044C24.0912 16.4195 24.3244 15.8589 24.7384 15.4456C25.1524 15.0324 25.7135 14.8003 26.2984 14.8003Z" fill="white"></path> <path class="logotype" d="M57.3672 20.9504H54.6797V30.9713H50.9297V20.9504H48.9922V17.7379H50.9297V16.4879C50.9297 13.2504 52.9505 11.5879 56.0214 11.5879C56.4968 11.5919 56.9705 11.6478 57.4339 11.7546V15.5046C57.0296 15.3425 56.5985 15.2577 56.163 15.2546C55.9663 15.239 55.7684 15.2662 55.5832 15.3343C55.3979 15.4024 55.2296 15.5099 55.0899 15.6492C54.9501 15.7886 54.8422 15.9566 54.7735 16.1417C54.7049 16.3267 54.6771 16.5245 54.6922 16.7213V17.7171H57.3797L57.3672 20.9504ZM63.013 30.9713H59.2214V11.8713H63.013V30.9713Z" fill="black"></path> <path class="logotype" d="M71.4292 16.9087C72.851 16.9062 74.2415 17.3257 75.4247 18.1141C76.6079 18.9025 77.5306 20.0242 78.0758 21.3373C78.6211 22.6504 78.7644 24.0958 78.4876 25.4904C78.2108 26.885 77.5264 28.166 76.5211 29.1714C75.5157 30.1768 74.2346 30.8612 72.84 31.1379C71.4454 31.4147 70.0001 31.2714 68.687 30.7262C67.3739 30.1809 66.2521 29.2583 65.4638 28.0751C64.6754 26.8919 64.2559 25.5013 64.2584 24.0795C64.2466 23.1346 64.4241 22.1969 64.7803 21.3215C65.1365 20.4462 65.6642 19.651 66.3325 18.9828C67.0007 18.3146 67.7959 17.7868 68.6712 17.4306C69.5465 17.0744 70.4842 16.897 71.4292 16.9087ZM71.4292 27.5962C73.3667 27.5962 74.7625 25.9879 74.7625 24.0795C74.7834 23.629 74.7126 23.1789 74.5544 22.7565C74.3963 22.3341 74.1541 21.9483 73.8424 21.6222C73.5308 21.2962 73.1562 21.0368 72.7414 20.8597C72.3266 20.6826 71.8802 20.5916 71.4292 20.592C70.5213 20.6234 69.661 21.006 69.0298 21.6594C68.3986 22.3127 68.0458 23.1857 68.0458 24.0941C68.0458 25.0026 68.3986 25.8755 69.0298 26.5288C69.661 27.1822 70.5213 27.5649 71.4292 27.5962Z" fill="black"></path> <path class="logotype" d="M82.5576 17.1875L84.9951 26.3542L87.4326 19.0708L86.7659 17.1917H90.5159L93.7284 26.3583L96.1076 17.1917H99.9992L95.9034 30.975H91.9701L89.2284 23.4167L86.6659 30.9708H82.7076L78.6367 17.1875H82.5576Z" fill="black"></path> </svg></div></a><nav role="navigation" class="new-navigation-menu is--right-align w-nav-menu"><div data-delay="0" data-hover="false" class="new-navitaion__menu-item w-dropdown"><div class="new-nav-link w-dropdown-toggle"><div class="nav-link-text">About</div><div class="nav-link-dropdown-icon w-icon-dropdown-toggle"></div></div><nav class="navigation-dropdown-list is--pin-right w-dropdown-list"><a href="/core-protocol" class="navigation-dropdown-link w-dropdown-link">Vision</a><a href="/flow-roadmap" class="navigation-dropdown-link w-dropdown-link">Roadmap</a><a href="/cadence" aria-current="page" class="navigation-dropdown-link icon w-dropdown-link w--current">Why Cadence</a><a href="/blog" class="navigation-dropdown-link icon w-dropdown-link">Blog</a><a href="/careers" class="navigation-dropdown-link icon w-dropdown-link">Careers</a><a href="/mediakit" class="navigation-dropdown-link icon w-dropdown-link">Media Kit</a><a href="/use-cases" class="navigation-dropdown-link w-dropdown-link">Use Cases</a></nav></div><div data-delay="0" data-hover="false" class="new-navitaion__menu-item w-dropdown"><div class="new-nav-link w-dropdown-toggle"><div class="nav-link-text">Build</div><div class="nav-link-dropdown-icon w-icon-dropdown-toggle"></div></div><nav class="navigation-dropdown-list is--pin-right w-dropdown-list"><a href="https://developers.flow.com/build/getting-started/hello-world" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Quickstart</a><a href="http://developers.flow.com/" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Portal</a><a href="https://developers.flow.com/build/flow" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Docs</a><a href="/certified-developers" class="navigation-dropdown-link icon w-dropdown-link">Certified Flow Devs</a><a href="/node-operation" class="navigation-dropdown-link icon w-dropdown-link">Run a Node</a><a href="https://github.com/onflow" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">GitHub</a><a href="https://status.onflow.org/" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Network Status</a><a href="https://www.flowscan.io/" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Block Explorer</a><div class="nav-social__desk"><div class="nav-social__wrapper"><a href="https://twitter.com/flow_blockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M17.1761 4.24268H19.9362L13.9061 11.0201L21 20.2427H15.4456L11.0951 14.6493L6.11723 20.2427H3.35544L9.80517 12.9935L3 4.24268H8.69545L12.6279 9.3553L17.1761 4.24268ZM16.2073 18.6181H17.7368L7.86441 5.78196H6.2232L16.2073 18.6181Z" fill="currentColor"/> </svg></div></a><a href="https://discord.com/invite/J6fFnh2xx6" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M20.2752 6.02667C18.7615 4.74667 16.945 4.10667 15.0275 4L14.7248 4.32C16.4404 4.74667 17.9541 5.6 19.367 6.77333C17.6514 5.81333 15.7339 5.17333 13.7156 4.96C13.1101 4.85333 12.6055 4.85333 12 4.85333C11.3945 4.85333 10.8899 4.85333 10.2844 4.96C8.26606 5.17333 6.34862 5.81333 4.63303 6.77333C6.04587 5.6 7.55963 4.74667 9.27523 4.32L8.97248 4C7.05505 4.10667 5.23853 4.74667 3.72477 6.02667C2.00917 9.44 1.10092 13.28 1 17.2267C2.51376 18.9333 4.63303 20 6.85321 20C6.85321 20 7.55963 19.1467 8.06422 18.4C6.75229 18.08 5.54128 17.3333 4.73395 16.16C5.44037 16.5867 6.14679 17.0133 6.85321 17.3333C7.76147 17.76 8.66973 17.9733 9.57798 18.1867C10.3853 18.2933 11.1927 18.4 12 18.4C12.8073 18.4 13.6147 18.2933 14.422 18.1867C15.3303 17.9733 16.2385 17.76 17.1468 17.3333C17.8532 17.0133 18.5596 16.5867 19.2661 16.16C18.4587 17.3333 17.2477 18.08 15.9358 18.4C16.4404 19.1467 17.1468 20 17.1468 20C19.367 20 21.4862 18.9333 23 17.2267C22.8991 13.28 21.9908 9.44 20.2752 6.02667ZM8.66972 15.3067C7.66055 15.3067 6.75229 14.3467 6.75229 13.1733C6.75229 12 7.66055 11.04 8.66972 11.04C9.6789 11.04 10.5872 12 10.5872 13.1733C10.5872 14.3467 9.6789 15.3067 8.66972 15.3067ZM15.3303 15.3067C14.3211 15.3067 13.4128 14.3467 13.4128 13.1733C13.4128 12 14.3211 11.04 15.3303 11.04C16.3394 11.04 17.2477 12 17.2477 13.1733C17.2477 14.3467 16.3394 15.3067 15.3303 15.3067Z" fill="currentColor"/> </svg></div></a><a href="https://github.com/onflow" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C7.02991 3 3 7.13058 3 12.2295C3 16.3078 5.57946 19.7634 9.15536 20.9849C9.60536 21.0693 9.77009 20.784 9.77009 20.5389C9.77009 20.3179 9.76205 19.7393 9.75804 18.9678C7.25491 19.5263 6.72455 17.7302 6.72455 17.7302C6.31473 16.6655 5.72411 16.3802 5.72411 16.3802C4.90848 15.8056 5.78438 15.8176 5.78438 15.8176C6.68839 15.8819 7.1625 16.7699 7.1625 16.7699C7.96607 18.1803 9.26786 17.7744 9.78214 17.5374C9.8625 16.9427 10.0955 16.5329 10.3527 16.3038C8.3558 16.0708 6.25446 15.2792 6.25446 11.7433C6.25446 10.7348 6.60402 9.91108 7.17857 9.26819C7.08616 9.03514 6.77679 8.09491 7.26696 6.8252C7.26696 6.8252 8.02232 6.57608 9.74196 7.76945C10.4612 7.56453 11.2286 7.46408 11.996 7.46006C12.7594 7.46408 13.5308 7.56453 14.25 7.76945C15.9696 6.57608 16.721 6.8252 16.721 6.8252C17.2112 8.09491 16.9018 9.03514 16.8094 9.26819C17.3839 9.9151 17.7335 10.7388 17.7335 11.7433C17.7335 15.2873 15.6281 16.0668 13.6232 16.2958C13.9446 16.5811 14.2339 17.1436 14.2339 18.0035C14.2339 19.237 14.2219 20.2335 14.2219 20.5349C14.2219 20.78 14.3826 21.0693 14.8406 20.9768C18.4246 19.7594 21 16.3038 21 12.2295C21 7.13058 16.9701 3 12 3Z" fill="currentColor"/> </svg></div></a><a href="https://flow.com/blog" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M19.875 3H7.5C6.87844 3 6.375 3.50344 6.375 4.125V8.625H4.12444C3.50287 8.625 3 9.14137 3 9.76294V18.2004C3 19.4441 4.00687 21 5.25 21H18.75C19.9914 21 21 19.4441 21 18.2004V4.125C21 3.50344 20.4966 3 19.875 3ZM6.375 18.2004C6.375 18.8214 5.87156 19.3254 5.25 19.3254C4.62844 19.3254 4.125 18.8214 4.125 18.2004V9.75H6.375V18.2004ZM17.625 17.625H9.75V16.5H17.625V17.625ZM17.625 14.25H9.75V13.125H17.625V14.25ZM17.625 10.875H9.75V7.5H17.625V10.875Z" fill="currentColor"/> </svg></div></a><a href="https://www.youtube.com/@FlowBlockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M21.5933 7.20301C21.4794 6.78041 21.2568 6.39501 20.9477 6.08518C20.6386 5.77534 20.2537 5.55187 19.8313 5.43701C18.2653 5.00701 12.0003 5.00001 12.0003 5.00001C12.0003 5.00001 5.73633 4.99301 4.16933 5.40401C3.74725 5.52415 3.36315 5.75078 3.0539 6.06214C2.74464 6.3735 2.52062 6.75913 2.40333 7.18201C1.99033 8.74801 1.98633 11.996 1.98633 11.996C1.98633 11.996 1.98233 15.26 2.39233 16.81C2.62233 17.667 3.29733 18.344 4.15533 18.575C5.73733 19.005 11.9853 19.012 11.9853 19.012C11.9853 19.012 18.2503 19.019 19.8163 18.609C20.2388 18.4943 20.6241 18.2714 20.934 17.9622C21.2439 17.653 21.4677 17.2682 21.5833 16.846C21.9973 15.281 22.0003 12.034 22.0003 12.034C22.0003 12.034 22.0203 8.76901 21.5933 7.20301ZM9.99633 15.005L10.0013 9.00501L15.2083 12.01L9.99633 15.005Z" fill="currentColor"/> </svg></div></a></div></div></nav></div><div data-hover="false" data-delay="100" class="new-navitaion__menu-item w-dropdown"><div class="new-nav-link w-dropdown-toggle"><div class="nav-link-text">Explore</div><div class="nav-link-dropdown-icon w-icon-dropdown-toggle"></div></div><nav class="navigation-dropdown-list explore w-dropdown-list"><a href="https://store.flow.com/apps" target="_blank" class="navigation-dropdown-link icon w-dropdown-link">Apps</a><a href="https://wallet.flow.com/" target="_blank" class="navigation-dropdown-link w-dropdown-link">Flow Wallet</a><a href="/flow-tokenomics/technical-overview" class="navigation-dropdown-link w-dropdown-link">FLOW Coin</a><a href="/use-flow/bridges" class="navigation-dropdown-link w-dropdown-link">Bridge</a><a href="https://port.onflow.org/" target="_blank" class="navigation-dropdown-link w-dropdown-link">Port</a><div class="nav-social__desk"><div class="nav-social__wrapper"><a href="https://twitter.com/flow_blockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M17.1761 4.24268H19.9362L13.9061 11.0201L21 20.2427H15.4456L11.0951 14.6493L6.11723 20.2427H3.35544L9.80517 12.9935L3 4.24268H8.69545L12.6279 9.3553L17.1761 4.24268ZM16.2073 18.6181H17.7368L7.86441 5.78196H6.2232L16.2073 18.6181Z" fill="currentColor"/> </svg></div></a><a href="https://discord.com/invite/J6fFnh2xx6" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M20.2752 6.02667C18.7615 4.74667 16.945 4.10667 15.0275 4L14.7248 4.32C16.4404 4.74667 17.9541 5.6 19.367 6.77333C17.6514 5.81333 15.7339 5.17333 13.7156 4.96C13.1101 4.85333 12.6055 4.85333 12 4.85333C11.3945 4.85333 10.8899 4.85333 10.2844 4.96C8.26606 5.17333 6.34862 5.81333 4.63303 6.77333C6.04587 5.6 7.55963 4.74667 9.27523 4.32L8.97248 4C7.05505 4.10667 5.23853 4.74667 3.72477 6.02667C2.00917 9.44 1.10092 13.28 1 17.2267C2.51376 18.9333 4.63303 20 6.85321 20C6.85321 20 7.55963 19.1467 8.06422 18.4C6.75229 18.08 5.54128 17.3333 4.73395 16.16C5.44037 16.5867 6.14679 17.0133 6.85321 17.3333C7.76147 17.76 8.66973 17.9733 9.57798 18.1867C10.3853 18.2933 11.1927 18.4 12 18.4C12.8073 18.4 13.6147 18.2933 14.422 18.1867C15.3303 17.9733 16.2385 17.76 17.1468 17.3333C17.8532 17.0133 18.5596 16.5867 19.2661 16.16C18.4587 17.3333 17.2477 18.08 15.9358 18.4C16.4404 19.1467 17.1468 20 17.1468 20C19.367 20 21.4862 18.9333 23 17.2267C22.8991 13.28 21.9908 9.44 20.2752 6.02667ZM8.66972 15.3067C7.66055 15.3067 6.75229 14.3467 6.75229 13.1733C6.75229 12 7.66055 11.04 8.66972 11.04C9.6789 11.04 10.5872 12 10.5872 13.1733C10.5872 14.3467 9.6789 15.3067 8.66972 15.3067ZM15.3303 15.3067C14.3211 15.3067 13.4128 14.3467 13.4128 13.1733C13.4128 12 14.3211 11.04 15.3303 11.04C16.3394 11.04 17.2477 12 17.2477 13.1733C17.2477 14.3467 16.3394 15.3067 15.3303 15.3067Z" fill="currentColor"/> </svg></div></a><a href="https://github.com/onflow" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C7.02991 3 3 7.13058 3 12.2295C3 16.3078 5.57946 19.7634 9.15536 20.9849C9.60536 21.0693 9.77009 20.784 9.77009 20.5389C9.77009 20.3179 9.76205 19.7393 9.75804 18.9678C7.25491 19.5263 6.72455 17.7302 6.72455 17.7302C6.31473 16.6655 5.72411 16.3802 5.72411 16.3802C4.90848 15.8056 5.78438 15.8176 5.78438 15.8176C6.68839 15.8819 7.1625 16.7699 7.1625 16.7699C7.96607 18.1803 9.26786 17.7744 9.78214 17.5374C9.8625 16.9427 10.0955 16.5329 10.3527 16.3038C8.3558 16.0708 6.25446 15.2792 6.25446 11.7433C6.25446 10.7348 6.60402 9.91108 7.17857 9.26819C7.08616 9.03514 6.77679 8.09491 7.26696 6.8252C7.26696 6.8252 8.02232 6.57608 9.74196 7.76945C10.4612 7.56453 11.2286 7.46408 11.996 7.46006C12.7594 7.46408 13.5308 7.56453 14.25 7.76945C15.9696 6.57608 16.721 6.8252 16.721 6.8252C17.2112 8.09491 16.9018 9.03514 16.8094 9.26819C17.3839 9.9151 17.7335 10.7388 17.7335 11.7433C17.7335 15.2873 15.6281 16.0668 13.6232 16.2958C13.9446 16.5811 14.2339 17.1436 14.2339 18.0035C14.2339 19.237 14.2219 20.2335 14.2219 20.5349C14.2219 20.78 14.3826 21.0693 14.8406 20.9768C18.4246 19.7594 21 16.3038 21 12.2295C21 7.13058 16.9701 3 12 3Z" fill="currentColor"/> </svg></div></a><a href="https://flow.com/blog" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M19.875 3H7.5C6.87844 3 6.375 3.50344 6.375 4.125V8.625H4.12444C3.50287 8.625 3 9.14137 3 9.76294V18.2004C3 19.4441 4.00687 21 5.25 21H18.75C19.9914 21 21 19.4441 21 18.2004V4.125C21 3.50344 20.4966 3 19.875 3ZM6.375 18.2004C6.375 18.8214 5.87156 19.3254 5.25 19.3254C4.62844 19.3254 4.125 18.8214 4.125 18.2004V9.75H6.375V18.2004ZM17.625 17.625H9.75V16.5H17.625V17.625ZM17.625 14.25H9.75V13.125H17.625V14.25ZM17.625 10.875H9.75V7.5H17.625V10.875Z" fill="currentColor"/> </svg></div></a><a href="https://www.youtube.com/@FlowBlockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M21.5933 7.20301C21.4794 6.78041 21.2568 6.39501 20.9477 6.08518C20.6386 5.77534 20.2537 5.55187 19.8313 5.43701C18.2653 5.00701 12.0003 5.00001 12.0003 5.00001C12.0003 5.00001 5.73633 4.99301 4.16933 5.40401C3.74725 5.52415 3.36315 5.75078 3.0539 6.06214C2.74464 6.3735 2.52062 6.75913 2.40333 7.18201C1.99033 8.74801 1.98633 11.996 1.98633 11.996C1.98633 11.996 1.98233 15.26 2.39233 16.81C2.62233 17.667 3.29733 18.344 4.15533 18.575C5.73733 19.005 11.9853 19.012 11.9853 19.012C11.9853 19.012 18.2503 19.019 19.8163 18.609C20.2388 18.4943 20.6241 18.2714 20.934 17.9622C21.2439 17.653 21.4677 17.2682 21.5833 16.846C21.9973 15.281 22.0003 12.034 22.0003 12.034C22.0003 12.034 22.0203 8.76901 21.5933 7.20301ZM9.99633 15.005L10.0013 9.00501L15.2083 12.01L9.99633 15.005Z" fill="currentColor"/> </svg></div></a></div></div></nav></div><div class="nav-social__mobile"><div class="nav-social__wrapper"><a href="https://twitter.com/flow_blockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M17.1761 4.24268H19.9362L13.9061 11.0201L21 20.2427H15.4456L11.0951 14.6493L6.11723 20.2427H3.35544L9.80517 12.9935L3 4.24268H8.69545L12.6279 9.3553L17.1761 4.24268ZM16.2073 18.6181H17.7368L7.86441 5.78196H6.2232L16.2073 18.6181Z" fill="currentColor"/> </svg></div></a><a href="https://discord.com/invite/J6fFnh2xx6" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M20.2752 6.02667C18.7615 4.74667 16.945 4.10667 15.0275 4L14.7248 4.32C16.4404 4.74667 17.9541 5.6 19.367 6.77333C17.6514 5.81333 15.7339 5.17333 13.7156 4.96C13.1101 4.85333 12.6055 4.85333 12 4.85333C11.3945 4.85333 10.8899 4.85333 10.2844 4.96C8.26606 5.17333 6.34862 5.81333 4.63303 6.77333C6.04587 5.6 7.55963 4.74667 9.27523 4.32L8.97248 4C7.05505 4.10667 5.23853 4.74667 3.72477 6.02667C2.00917 9.44 1.10092 13.28 1 17.2267C2.51376 18.9333 4.63303 20 6.85321 20C6.85321 20 7.55963 19.1467 8.06422 18.4C6.75229 18.08 5.54128 17.3333 4.73395 16.16C5.44037 16.5867 6.14679 17.0133 6.85321 17.3333C7.76147 17.76 8.66973 17.9733 9.57798 18.1867C10.3853 18.2933 11.1927 18.4 12 18.4C12.8073 18.4 13.6147 18.2933 14.422 18.1867C15.3303 17.9733 16.2385 17.76 17.1468 17.3333C17.8532 17.0133 18.5596 16.5867 19.2661 16.16C18.4587 17.3333 17.2477 18.08 15.9358 18.4C16.4404 19.1467 17.1468 20 17.1468 20C19.367 20 21.4862 18.9333 23 17.2267C22.8991 13.28 21.9908 9.44 20.2752 6.02667ZM8.66972 15.3067C7.66055 15.3067 6.75229 14.3467 6.75229 13.1733C6.75229 12 7.66055 11.04 8.66972 11.04C9.6789 11.04 10.5872 12 10.5872 13.1733C10.5872 14.3467 9.6789 15.3067 8.66972 15.3067ZM15.3303 15.3067C14.3211 15.3067 13.4128 14.3467 13.4128 13.1733C13.4128 12 14.3211 11.04 15.3303 11.04C16.3394 11.04 17.2477 12 17.2477 13.1733C17.2477 14.3467 16.3394 15.3067 15.3303 15.3067Z" fill="currentColor"/> </svg></div></a><a href="https://github.com/onflow" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C7.02991 3 3 7.13058 3 12.2295C3 16.3078 5.57946 19.7634 9.15536 20.9849C9.60536 21.0693 9.77009 20.784 9.77009 20.5389C9.77009 20.3179 9.76205 19.7393 9.75804 18.9678C7.25491 19.5263 6.72455 17.7302 6.72455 17.7302C6.31473 16.6655 5.72411 16.3802 5.72411 16.3802C4.90848 15.8056 5.78438 15.8176 5.78438 15.8176C6.68839 15.8819 7.1625 16.7699 7.1625 16.7699C7.96607 18.1803 9.26786 17.7744 9.78214 17.5374C9.8625 16.9427 10.0955 16.5329 10.3527 16.3038C8.3558 16.0708 6.25446 15.2792 6.25446 11.7433C6.25446 10.7348 6.60402 9.91108 7.17857 9.26819C7.08616 9.03514 6.77679 8.09491 7.26696 6.8252C7.26696 6.8252 8.02232 6.57608 9.74196 7.76945C10.4612 7.56453 11.2286 7.46408 11.996 7.46006C12.7594 7.46408 13.5308 7.56453 14.25 7.76945C15.9696 6.57608 16.721 6.8252 16.721 6.8252C17.2112 8.09491 16.9018 9.03514 16.8094 9.26819C17.3839 9.9151 17.7335 10.7388 17.7335 11.7433C17.7335 15.2873 15.6281 16.0668 13.6232 16.2958C13.9446 16.5811 14.2339 17.1436 14.2339 18.0035C14.2339 19.237 14.2219 20.2335 14.2219 20.5349C14.2219 20.78 14.3826 21.0693 14.8406 20.9768C18.4246 19.7594 21 16.3038 21 12.2295C21 7.13058 16.9701 3 12 3Z" fill="currentColor"/> </svg></div></a><a href="https://flow.com/blog" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M19.875 3H7.5C6.87844 3 6.375 3.50344 6.375 4.125V8.625H4.12444C3.50287 8.625 3 9.14137 3 9.76294V18.2004C3 19.4441 4.00687 21 5.25 21H18.75C19.9914 21 21 19.4441 21 18.2004V4.125C21 3.50344 20.4966 3 19.875 3ZM6.375 18.2004C6.375 18.8214 5.87156 19.3254 5.25 19.3254C4.62844 19.3254 4.125 18.8214 4.125 18.2004V9.75H6.375V18.2004ZM17.625 17.625H9.75V16.5H17.625V17.625ZM17.625 14.25H9.75V13.125H17.625V14.25ZM17.625 10.875H9.75V7.5H17.625V10.875Z" fill="currentColor"/> </svg></div></a><a href="https://www.youtube.com/@FlowBlockchain" target="_blank" class="nav-social__link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 24 24" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img"> <path d="M21.5933 7.20301C21.4794 6.78041 21.2568 6.39501 20.9477 6.08518C20.6386 5.77534 20.2537 5.55187 19.8313 5.43701C18.2653 5.00701 12.0003 5.00001 12.0003 5.00001C12.0003 5.00001 5.73633 4.99301 4.16933 5.40401C3.74725 5.52415 3.36315 5.75078 3.0539 6.06214C2.74464 6.3735 2.52062 6.75913 2.40333 7.18201C1.99033 8.74801 1.98633 11.996 1.98633 11.996C1.98633 11.996 1.98233 15.26 2.39233 16.81C2.62233 17.667 3.29733 18.344 4.15533 18.575C5.73733 19.005 11.9853 19.012 11.9853 19.012C11.9853 19.012 18.2503 19.019 19.8163 18.609C20.2388 18.4943 20.6241 18.2714 20.934 17.9622C21.2439 17.653 21.4677 17.2682 21.5833 16.846C21.9973 15.281 22.0003 12.034 22.0003 12.034C22.0003 12.034 22.0203 8.76901 21.5933 7.20301ZM9.99633 15.005L10.0013 9.00501L15.2083 12.01L9.99633 15.005Z" fill="currentColor"/> </svg></div></a></div></div></nav><div class="new-menu-button w-nav-button"><div class="w-icon-nav-menu"></div></div></div></div></div><main class="main-wrapper is--relative"><div class="cadence-new__hero-wrapper"><section data-w-id="83e9dd65-8100-0ab1-34e5-aa54602ccfae" class="hero is--cadence-new"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-large is--hero-cadence-new"><div class="hero_grid is--cadence-new"><div class="hero-content"><h1 data-w-id="3477c412-5393-bb35-9564-b753122744d6" class="hero-title">Cadence</h1><div class="max-width-small"><div class="text-size-medium">The secure, resource-oriented smart contract language built for powerful onchain logic.</div></div><div class="buttons__wrapper is--align-left"><a href="https://cadence-lang.org/docs/tutorial/first-steps" target="_blank" class="button-base is--green w-inline-block"><div class="button-content"><div class="text-size-small">Start Learning Cadence</div></div></a><a href="https://developers.flow.com/cadence" target="_blank" class="button-base is--white w-inline-block"><div class="button-content"><div class="text-size-small">Read the Docs</div></div></a></div></div></div></div></div></div></section><section class="section-wrapper bg-color-gray-100"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-xsmall"><div class="cadence-new__grid-intro"><h2 data-w-id="1426b63c-51f8-2e5a-ba93-ee6060b5e9ef" class="text-size-medium text-style-allcaps">Discover Cadence</h2><div class="cadence-new__toc-wrapper"><ul role="list" class="cadence-new__toc-list"><li class="cadence-new__toc-list-item"><a href="#what-is-cadence" class="cadence-new__toc-link">What is Cadence</a></li><li class="cadence-new__toc-list-item"><a href="#why-cadence" class="cadence-new__toc-link">Why Cadence?</a></li><li class="cadence-new__toc-list-item"><a href="#core-features" class="cadence-new__toc-link">Cadence Features</a></li><li class="cadence-new__toc-list-item is--last"><a href="#get-started" class="cadence-new__toc-link">Start Building with Cadence</a></li></ul></div></div></div></div></div></section></div><section id="what-is-cadence" class="section-wrapper"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-large"><div class="cadence-new__grid-intro"><h2 class="text-size-medium text-style-allcaps">What is Cadence</h2><div class="content-block is--vertical-medium"><p class="text-size-regular text-color-gray-700">Cadence is a resource-oriented, high-level programming language designed for developing smart contracts. It prioritizes <strong>safety, readability, and ease of use</strong>, making it an excellent choice for developers looking to build secure and scalable blockchain applications.</p><p class="text-size-regular text-color-gray-700">Cadence introduces a novel approach to smart contract development, leveraging strong static typing, capability-based security, and an intuitive syntax inspired by Swift and Rust. With built-in protections against common vulnerabilities like reentrancy attacks and unauthorized asset transfers, Cadence ensures that smart contracts remain secure and predictable.</p><div class="divider-line"></div><p class="text-size-large">Think of Cadence as the next-gen language for creating powerful onchain logic and seamless experience apps — without compromising security or composability.</p><div class="divider-line"></div></div></div></div></div></div></section><section id="why-cadence" class="section-wrapper"><div class="padding-global"><div class="padding-section-large"><div class="container-xlarge"><div class="text-align-center"><div class="flex-vertical-center"><h2 class="heading-xxlarge text-style-allcaps"><strong>Why Cadence?</strong></h2><div class="spacer-xsmall"></div><div class="max-width-small"><div>We built Cadence to solve the problems that existing smart contract languages (like Solidity) couldn’t:</div></div></div></div><div class="spacer-large"></div><div class="cadence-new__grid-benefits"><div class="cadence-new__benefits-card"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 11.4999L11 13.4999L15.5 8.99987M20 11.9999C20 16.9083 14.646 20.4783 12.698 21.6147C12.4766 21.7439 12.3659 21.8085 12.2097 21.842C12.0884 21.868 11.9116 21.868 11.7903 21.842C11.6341 21.8085 11.5234 21.7439 11.302 21.6147C9.35401 20.4783 4 16.9083 4 11.9999V7.21747C4 6.41796 4 6.0182 4.13076 5.67457C4.24628 5.37101 4.43398 5.10015 4.67766 4.8854C4.9535 4.64231 5.3278 4.50195 6.07641 4.22122L11.4382 2.21054C11.6461 2.13258 11.75 2.0936 11.857 2.07815C11.9518 2.06444 12.0482 2.06444 12.143 2.07815C12.2499 2.0936 12.3539 2.13258 12.5618 2.21054L17.9236 4.22122C18.6722 4.50195 19.0465 4.64231 19.3223 4.8854C19.566 5.10015 19.7537 5.37101 19.8692 5.67457C20 6.0182 20 6.41796 20 7.21747V11.9999Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Secure by Design</div><div>Cadence uses resource types and type safety to prevent exploits and bugs.</div></div><div class="cadence-new__benefits-card"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M22 9H2M14 17.5L16.5 15L14 12.5M10 12.5L7.5 15L10 17.5M2 7.8L2 16.2C2 17.8802 2 18.7202 2.32698 19.362C2.6146 19.9265 3.07354 20.3854 3.63803 20.673C4.27976 21 5.11984 21 6.8 21H17.2C18.8802 21 19.7202 21 20.362 20.673C20.9265 20.3854 21.3854 19.9265 21.673 19.362C22 18.7202 22 17.8802 22 16.2V7.8C22 6.11984 22 5.27977 21.673 4.63803C21.3854 4.07354 20.9265 3.6146 20.362 3.32698C19.7202 3 18.8802 3 17.2 3L6.8 3C5.11984 3 4.27976 3 3.63803 3.32698C3.07354 3.6146 2.6146 4.07354 2.32698 4.63803C2 5.27976 2 6.11984 2 7.8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Developer-Friendly</div><div>A readable, modern syntax with built-in guardrails for safer development.</div></div><div class="cadence-new__benefits-card"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7 9.50006L2 12.0001L11.6422 16.8212C11.7734 16.8868 11.839 16.9196 11.9078 16.9325C11.9687 16.9439 12.0313 16.9439 12.0922 16.9325C12.161 16.9196 12.2266 16.8868 12.3578 16.8212L22 12.0001L17 9.50006M7 14.5001L2 17.0001L11.6422 21.8212C11.7734 21.8868 11.839 21.9196 11.9078 21.9325C11.9687 21.9439 12.0313 21.9439 12.0922 21.9325C12.161 21.9196 12.2266 21.8868 12.3578 21.8212L22 17.0001L17 14.5001M2 7.00006L11.6422 2.17895C11.7734 2.11336 11.839 2.08056 11.9078 2.06766C11.9687 2.05622 12.0313 2.05622 12.0922 2.06766C12.161 2.08056 12.2266 2.11336 12.3578 2.17895L22 7.00006L12.3578 11.8212C12.2266 11.8868 12.161 11.9196 12.0922 11.9325C12.0313 11.9439 11.9687 11.9439 11.9078 11.9325C11.839 11.9196 11.7734 11.8868 11.6422 11.8212L2 7.00006Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Composable & Scalable</div><div>Designed for interoperability and seamless contract upgrades.</div></div><div class="cadence-new__benefits-card"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20 10V6.8C20 5.11984 20 4.27976 19.673 3.63803C19.3854 3.07354 18.9265 2.6146 18.362 2.32698C17.7202 2 16.8802 2 15.2 2H8.8C7.11984 2 6.27976 2 5.63803 2.32698C5.07354 2.6146 4.6146 3.07354 4.32698 3.63803C4 4.27976 4 5.11984 4 6.8V17.2C4 18.8802 4 19.7202 4.32698 20.362C4.6146 20.9265 5.07354 21.3854 5.63803 21.673C6.27976 22 7.11984 22 8.8 22H10.5M13 11H8M11 15H8M16 7H8M19.25 17V15.25C19.25 14.2835 18.4665 13.5 17.5 13.5C16.5335 13.5 15.75 14.2835 15.75 15.25V17M15.6 21H19.4C19.9601 21 20.2401 21 20.454 20.891C20.6422 20.7951 20.7951 20.6422 20.891 20.454C21 20.2401 21 19.9601 21 19.4V18.6C21 18.0399 21 17.7599 20.891 17.546C20.7951 17.3578 20.6422 17.2049 20.454 17.109C20.2401 17 19.9601 17 19.4 17H15.6C15.0399 17 14.7599 17 14.546 17.109C14.3578 17.2049 14.2049 17.3578 14.109 17.546C14 17.7599 14 18.0399 14 18.6V19.4C14 19.9601 14 20.2401 14.109 20.454C14.2049 20.6422 14.3578 20.7951 14.546 20.891C14.7599 21 15.0399 21 15.6 21Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Real Ownership</div><div>Assets like NFTs and tokens are first-class citizens, with true onchain control.</div></div><div class="cadence-new__benefits-card"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.0505 9H5.5C4.11929 9 3 7.88071 3 6.5C3 5.11929 4.11929 4 5.5 4H15.0505M8.94949 20H18.5C19.8807 20 21 18.8807 21 17.5C21 16.1193 19.8807 15 18.5 15H8.94949M3 17.5C3 19.433 4.567 21 6.5 21C8.433 21 10 19.433 10 17.5C10 15.567 8.433 14 6.5 14C4.567 14 3 15.567 3 17.5ZM21 6.5C21 8.433 19.433 10 17.5 10C15.567 10 14 8.433 14 6.5C14 4.567 15.567 3 17.5 3C19.433 3 21 4.567 21 6.5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Fine-Grained Permissions</div><div>Built-in capabilities make role-based access and temporary permissions easy to manage and enforce.</div></div></div></div></div></div></section><section id="core-features" class="section-wrapper"><div class="padding-global"><div class="padding-section-large"><div class="container-xlarge"><div class="text-align-center"><div class="flex-vertical-center"><div class="image-wrapper is--cadence-new-features"><img src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/67e5af4d56d5c02b684bd8ce_flow-cadence-features.png" loading="lazy" alt="" class="ratio-3x2"/></div><div class="spacer-xsmall"></div><div class="max-width-medium"><h2 class="heading-xxlarge text-style-allcaps"><strong>Powerful Features Built for Web3 Developers</strong></h2></div><div class="spacer-xsmall"></div><div class="max-width-medium-small"><div class="text-size-medium">Cadence 1.0 is packed with smart contract features designed for <span class="text-style-nowrap">real-world</span> scalability, security, and UX.</div></div></div></div><div class="spacer-xxlarge"></div><div><div class="text-align-center"><div><div class="flex-vertical-center"><div class="max-width-medium"><h3 class="heading-medium"><strong>Core Language Concepts</strong></h3></div></div></div></div><div class="spacer-large"></div><div class="features-tabs__component"><div id="w-node-c5f0c730-9645-4990-8e1c-5d7f92ab77b5-f5ced840" class="features-tabs__navigation"><div class="features-tabs__tab-item is--active"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20.5 7.27783L12 12.0001M12 12.0001L3.49997 7.27783M12 12.0001L12 21.5001M14 20.889L12.777 21.5684C12.4934 21.726 12.3516 21.8047 12.2015 21.8356C12.0685 21.863 11.9315 21.863 11.7986 21.8356C11.6484 21.8047 11.5066 21.726 11.223 21.5684L3.82297 17.4573C3.52346 17.2909 3.37368 17.2077 3.26463 17.0893C3.16816 16.9847 3.09515 16.8606 3.05048 16.7254C3 16.5726 3 16.4013 3 16.0586V7.94153C3 7.59889 3 7.42757 3.05048 7.27477C3.09515 7.13959 3.16816 7.01551 3.26463 6.91082C3.37368 6.79248 3.52345 6.70928 3.82297 6.54288L11.223 2.43177C11.5066 2.27421 11.6484 2.19543 11.7986 2.16454C11.9315 2.13721 12.0685 2.13721 12.2015 2.16454C12.3516 2.19543 12.4934 2.27421 12.777 2.43177L20.177 6.54288C20.4766 6.70928 20.6263 6.79248 20.7354 6.91082C20.8318 7.01551 20.9049 7.13959 20.9495 7.27477C21 7.42757 21 7.59889 21 7.94153L21 12.5001M7.5 4.50008L16.5 9.50008M19 21.0001V15.0001M16 18.0001H22" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Resource-Oriented Programming</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li>Unique resource types that prevent duplication or loss of assets.</li><li>Ensures safe ownership transfers with the <em class="cadence-new__code-span">move (<-)</em> operator.</li></ul><p><a href="https://cadence-lang.org/docs/language/resources" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Object users store in their account, represents currency</span><span> </span>resource Vault { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span> <span> </span><span class="hljs-function" style="color:#007faa">init</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">balance: UFix64</span><span class="hljs-function">)</span><span> { </span> self.balance = balance } } <span></span><span style="color:#7928a1">let</span><span> vault <- create Vault(balance: </span><span style="color:#aa5d00">10.0</span><span>) </span><span style="color:#696969">// creation</span><span> </span><span></span><span style="color:#7928a1">let</span><span> myVault <- vault </span><span style="color:#696969">// move with <-</span><span> </span><span>vault.balance </span><span style="color:#696969">// Invalid: Cannot access: The old vault was moved</span><span> </span><span></span><span style="color:#7928a1">let</span><span> vaultCopy = myVault </span><span style="color:#696969">// Invalid: Cannot make copies of resources</span><span> </span> </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19.3618 20.5918C20.6238 20.5918 21.6478 19.5688 21.6478 18.3058V13.7348L22.7908 12.5918L21.6478 11.4488V6.8778C21.6478 5.6148 20.6248 4.5918 19.3618 4.5918M6.22002 4.5918C4.95702 4.5918 3.93402 5.6148 3.93402 6.8778V11.4488L2.79102 12.5918L3.93402 13.7348V18.3058C3.93402 19.5688 4.95702 20.5918 6.22002 20.5918M8.29102 12.5918L10.7253 15.0261C10.9233 15.2241 11.0223 15.3231 11.1365 15.3602C11.2369 15.3928 11.3451 15.3928 11.4455 15.3602C11.5597 15.3231 11.6587 15.2241 11.8567 15.0261L17.291 9.5918" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Strong Static Typing</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li>Prevents runtime errors by enforcing type correctness at compile time.</li><li><strong>Type inference</strong> reduces the need for explicit type annotations while maintaining safety.</li></ul><p><a href="https://cadence-lang.org/docs/language/type-safety" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span><span></span><span style="color:#7928a1">let</span><span> name: </span><span style="color:#aa5d00">String</span><span> = </span><span style="color:#008000">"Cadence"</span><span> </span><span></span><span style="color:#696969">// Invalid: cannot assign an `Int` value to a `String` variable.</span><span> </span><span></span><span style="color:#696969">//</span><span> </span><span>name = </span><span style="color:#aa5d00">0</span><span> </span> <span></span><span style="color:#696969">// Language infers the type to be `Int` without a specification</span><span> </span><span></span><span style="color:#7928a1">let</span><span> age = </span><span style="color:#aa5d00">32</span><span> </span> </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M17.791 9.44672C17.791 8.93489 17.5957 8.42307 17.2052 8.03256C16.8147 7.64204 16.3029 7.44678 15.791 7.44678M15.791 15.4468C19.1047 15.4468 21.791 12.7605 21.791 9.44678C21.791 6.13307 19.1047 3.44678 15.791 3.44678C12.4773 3.44678 9.79102 6.13307 9.79102 9.44678C9.79102 9.72046 9.80934 9.98985 9.84483 10.2538C9.90319 10.688 9.93238 10.905 9.91273 11.0424C9.89227 11.1854 9.86622 11.2625 9.7957 11.3887C9.72801 11.5098 9.60873 11.6291 9.37015 11.8676L4.25964 16.9781C4.08669 17.1511 4.00022 17.2376 3.93838 17.3385C3.88355 17.428 3.84314 17.5255 3.81865 17.6275C3.79102 17.7426 3.79102 17.8649 3.79102 18.1095V19.8468C3.79102 20.4068 3.79102 20.6869 3.90001 20.9008C3.99588 21.0889 4.14886 21.2419 4.33703 21.3378C4.55094 21.4468 4.83096 21.4468 5.39102 21.4468H7.79102V19.4468H9.79102V17.4468H11.791L13.3701 15.8676C13.6087 15.6291 13.728 15.5098 13.8491 15.4421C13.9753 15.3716 14.0524 15.3455 14.1954 15.3251C14.3328 15.3054 14.5498 15.3346 14.984 15.393C15.2479 15.4285 15.5173 15.4468 15.791 15.4468Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Capability-Based Security</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Granular access control</strong> that eliminates unauthorized and malicious asset access through entitlements and capabilities.</li><li><em class="cadence-new__code-span">storage</em> and <em class="cadence-new__code-span">public</em> paths allow control over the visibility of owned objects</li></ul><p><a href="https://cadence-lang.org/docs/language/capabilities" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Object users store in their account, represents currency</span><span> </span>resource Vault { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span> <span> </span><span style="color:#696969">// Only those with a `Withdraw` reference to this object</span><span> </span><span> </span><span style="color:#696969">// can call this function. Only the owner can grant a Withdraw reference</span><span> </span> access(Withdraw) fun withdraw(amount: UFix64) } <span></span><span style="color:#696969">// Create a private withdraw capability in storage that</span><span> </span><span></span><span style="color:#696969">// can only be given to those you trust</span><span> </span>withdrawCapability = account.capabilities.issue<auth(Withdraw) &Vault>( <span> target: </span><span style="color:#d91e18">/storage/my</span><span>Vault </span>) <span></span><span style="color:#696969">// Create a public capability that allows anyone to deposit currency</span><span> </span><span></span><span style="color:#696969">// to your account because it is created in a `public` path</span><span> </span>signer.capabilities.publish ( signer.capabilities.storage.issue<&Vault>( vaultData.storagePath ), <span> </span><span class="hljs-attr">at</span><span>: </span><span style="color:#d91e18">/public/</span><span>vaultReceiver </span>) </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.79102 10.0577L2.79102 12.5577L12.4332 17.3788C12.5644 17.4444 12.63 17.4772 12.6988 17.4901C12.7598 17.5015 12.8223 17.5015 12.8832 17.4901C12.952 17.4772 13.0176 17.4444 13.1488 17.3788L22.791 12.5577L17.791 10.0577M7.79102 15.0577L2.79102 17.5577L12.4332 22.3788C12.5644 22.4444 12.63 22.4772 12.6988 22.4901C12.7598 22.5015 12.8223 22.5015 12.8832 22.4901C12.952 22.4772 13.0176 22.4444 13.1488 22.3788L22.791 17.5577L17.791 15.0577M2.79102 7.55768L12.4332 2.73657C12.5644 2.67098 12.63 2.63818 12.6988 2.62527C12.7598 2.61384 12.8223 2.61384 12.8832 2.62527C12.952 2.63818 13.0176 2.67098 13.1488 2.73657L22.791 7.55768L13.1488 12.3788C13.0176 12.4444 12.952 12.4772 12.8832 12.4901C12.8223 12.5015 12.7598 12.5015 12.6988 12.4901C12.63 12.4772 12.5644 12.4444 12.4332 12.3788L2.79102 7.55768Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Flexible Smart Contract Model</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Upgradeable smart contracts</strong> with controlled modifications.</li><li>Contracts can define interfaces, enums, and composite types for better modularity.</li></ul><p><a href="https://cadence-lang.org/docs/language/contracts" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Declare an interface that requires the`greet` function</span><span> </span>access(all) contract interface Greeter { <span> access(all) fun greet(): </span><span style="color:#aa5d00">String</span><span> </span>} <span></span><span style="color:#696969">// A contract can implement interfaces to enforce correctness of implementation</span><span> </span>access(all) contract HelloWorld: Greeter { <span> access(all) fun greet(): </span><span style="color:#aa5d00">String</span><span> { </span><span> </span><span style="color:#7928a1">return</span><span> </span><span style="color:#008000">"Hello, Flow!"</span><span> </span> } } <span></span><span style="color:#696969">// Interfaces can also be used for composite types!</span><span> </span>access(all) resource interface Balance { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span>} </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 11.4999L11 13.4999L15.5 8.99987M20 11.9999C20 16.9083 14.646 20.4783 12.698 21.6147C12.4766 21.7439 12.3659 21.8085 12.2097 21.842C12.0884 21.868 11.9116 21.868 11.7903 21.842C11.6341 21.8085 11.5234 21.7439 11.302 21.6147C9.35396 20.4783 4 16.9083 4 11.9999V7.21747C4 6.41796 4 6.0182 4.13076 5.67457C4.24627 5.37101 4.43398 5.10015 4.67766 4.8854C4.9535 4.64231 5.3278 4.50195 6.0764 4.22122L11.4382 2.21054C11.6461 2.13258 11.75 2.0936 11.857 2.07815C11.9518 2.06444 12.0482 2.06444 12.143 2.07815C12.25 2.0936 12.3539 2.13258 12.5618 2.21054L17.9236 4.22122C18.6722 4.50195 19.0465 4.64231 19.3223 4.8854C19.566 5.10015 19.7537 5.37101 19.8692 5.67457C20 6.0182 20 6.41796 20 7.21747V11.9999Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Built-in Safety Mechanisms</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Preconditions & Postconditions</strong> to enforce correct execution.</li><li><strong>No reentrancy vulnerabilities</strong>, preventing most common exploits found in Solidity.</li></ul><p><a href="https://cadence-lang.org/docs#cadences-programming-language-pillars" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span>access(all) fun withdraw(amount: UFix64): @Vault { pre { <span> amount <= self.balance: </span><span style="color:#008000">"Amount to withdraw cannot be more than the balance!"</span><span> </span> } post { <span> result.balance == before(result.balance) - amount: </span><span style="color:#008000">"Wrong amount withdrawn!"</span><span> </span> } self.balance = self.balance - amount <span> </span><span style="color:#7928a1">return</span><span> </span><span class="xml"><-create Vault(balance: amount) </span><span class="xml">} </span><span class="xml"> </span><span class="xml"></span></code></pre></div></div></div></div></div><div id="w-node-_9b9a83a2-b20a-97f7-4300-bbaab369cc32-f5ced840" class="features-tabs__media-desktop"><div class="cadence-new__features-media is--active"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Object users store in their account, represents currency</span><span> </span>resource Vault { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span> <span> </span><span class="hljs-function" style="color:#007faa">init</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">balance: UFix64</span><span class="hljs-function">)</span><span> { </span> self.balance = balance } } <span></span><span style="color:#7928a1">let</span><span> vault <- create Vault(balance: </span><span style="color:#aa5d00">10.0</span><span>) </span><span style="color:#696969">// creation</span><span> </span><span></span><span style="color:#7928a1">let</span><span> myVault <- vault </span><span style="color:#696969">// move with <-</span><span> </span><span>vault.balance </span><span style="color:#696969">// Invalid: Cannot access: The old vault was moved</span><span> </span><span></span><span style="color:#7928a1">let</span><span> vaultCopy = myVault </span><span style="color:#696969">// Invalid: Cannot make copies of resources</span><span> </span> </code></pre></div></div><div class="cadence-new__features-media"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span><span></span><span style="color:#7928a1">let</span><span> name: </span><span style="color:#aa5d00">String</span><span> = </span><span style="color:#008000">"Cadence"</span><span> </span><span></span><span style="color:#696969">// Invalid: cannot assign an `Int` value to a `String` variable.</span><span> </span><span></span><span style="color:#696969">//</span><span> </span><span>name = </span><span style="color:#aa5d00">0</span><span> </span> <span></span><span style="color:#696969">// Language infers the type to be `Int` without a specification</span><span> </span><span></span><span style="color:#7928a1">let</span><span> age = </span><span style="color:#aa5d00">32</span><span> </span> </code></pre></div></div><div class="cadence-new__features-media"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Object users store in their account, represents currency</span><span> </span>resource Vault { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span> <span> </span><span style="color:#696969">// Only those with a `Withdraw` reference to this object</span><span> </span><span> </span><span style="color:#696969">// can call this function. Only the owner can grant a Withdraw reference</span><span> </span> access(Withdraw) fun withdraw(amount: UFix64) } <span></span><span style="color:#696969">// Create a private withdraw capability in storage that</span><span> </span><span></span><span style="color:#696969">// can only be given to those you trust</span><span> </span>withdrawCapability = account.capabilities.issue<auth(Withdraw) &Vault>( <span> target: </span><span style="color:#d91e18">/storage/my</span><span>Vault </span>) <span></span><span style="color:#696969">// Create a public capability that allows anyone to deposit currency</span><span> </span><span></span><span style="color:#696969">// to your account because it is created in a `public` path</span><span> </span>signer.capabilities.publish ( signer.capabilities.storage.issue<&Vault>( vaultData.storagePath ), <span> </span><span class="hljs-attr">at</span><span>: </span><span style="color:#d91e18">/public/</span><span>vaultReceiver </span>) </code></pre></div></div><div class="cadence-new__features-media"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Declare an interface that requires the`greet` function</span><span> </span>access(all) contract interface Greeter { <span> access(all) fun greet(): </span><span style="color:#aa5d00">String</span><span> </span>} <span></span><span style="color:#696969">// A contract can implement interfaces to enforce correctness of implementation</span><span> </span>access(all) contract HelloWorld: Greeter { <span> access(all) fun greet(): </span><span style="color:#aa5d00">String</span><span> { </span><span> </span><span style="color:#7928a1">return</span><span> </span><span style="color:#008000">"Hello, Flow!"</span><span> </span> } } <span></span><span style="color:#696969">// Interfaces can also be used for composite types!</span><span> </span>access(all) resource interface Balance { <span> access(all) </span><span style="color:#7928a1">var</span><span> balance: UFix64 </span>} </code></pre></div></div><div class="cadence-new__features-media"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span>access(all) fun withdraw(amount: UFix64): @Vault { pre { <span> amount <= self.balance: </span><span style="color:#008000">"Amount to withdraw cannot be more than the balance!"</span><span> </span> } post { <span> result.balance == before(result.balance) - amount: </span><span style="color:#008000">"Wrong amount withdrawn!"</span><span> </span> } self.balance = self.balance - amount <span> </span><span style="color:#7928a1">return</span><span> </span><span class="xml"><-create Vault(balance: amount) </span><span class="xml">} </span><span class="xml"> </span><span class="xml"></span></code></pre></div></div></div></div></div><div class="spacer-huge"></div><div><div class="text-align-center"><div><div class="flex-vertical-center"><div class="max-width-medium"><h3 class="heading-medium"><strong>Advanced Features</strong></h3></div></div></div></div><div class="spacer-large"></div><div class="features-tabs__component is--tabs-purple"><div id="w-node-_067d00a5-3a9c-2db1-e06b-55bfc30a6b96-f5ced840" class="features-tabs__media-desktop"><div class="cadence-new__features-media is--purple is--active"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span><span>access(all) view fun sayHello(name: </span><span style="color:#aa5d00">String</span><span>): </span><span style="color:#aa5d00">String</span><span> { </span><span> </span><span style="color:#7928a1">return</span><span> </span><span style="color:#008000">"Hello, \(name)"</span><span> </span>} </code></pre></div></div><div class="cadence-new__features-media is--purple"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>access(all) event SignatureVerified(publicKey: </span><span style="color:#aa5d00">String</span><span>, </span><span class="hljs-attr">signature</span><span>: </span><span style="color:#aa5d00">String</span><span>) </span> <span></span><span style="color:#7928a1">let</span><span> pk = PublicKey( </span><span> publicKey: </span><span style="color:#008000">"96142CE0C5ECD869DC88C8960E286AF1CE1B29F329BA4964213934731E65A1DE480FD43EF123B9633F0A90434C6ACE0A98BB9A999231DB3F477F9D3623A6A4ED"</span><span>.decodeHex(), </span><span> </span><span class="hljs-attr">signatureAlgorithm</span><span>: SignatureAlgorithm.ECDSA_P256 </span>) <span></span><span style="color:#7928a1">let</span><span> signature = </span><span style="color:#008000">"108EF718F153CFDC516D8040ABF2C8CC7AECF37C6F6EF357C31DFE1F7AC79C9D0145D1A2F08A48F1A2489A84C725D6A7AB3E842D9DC5F8FE8E659FFF5982310D"</span><span>.decodeHex() </span><span></span><span style="color:#7928a1">let</span><span> message : [UInt8] = [</span><span style="color:#aa5d00">1</span><span>, </span><span style="color:#aa5d00">2</span><span>, </span><span style="color:#aa5d00">3</span><span>] </span> <span></span><span style="color:#7928a1">let</span><span> isValid = pk.verify( </span> signature: signature, <span> </span><span class="hljs-attr">signedData</span><span>: message, </span><span> </span><span class="hljs-attr">domainSeparationTag</span><span>: </span><span style="color:#008000">""</span><span>, </span><span> </span><span class="hljs-attr">hashAlgorithm</span><span>: HashAlgorithm.SHA2_256 </span>) <span></span><span style="color:#7928a1">if</span><span> isValid { emit SignatureVerified(publicKey: publicKey, </span><span class="hljs-attr">signature</span><span>: signature) </span> </code></pre></div></div><div class="cadence-new__features-media is--purple"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>transaction { </span> <span> </span><span style="color:#696969">// Authorize with multiple accounts</span><span> </span><span> </span><span style="color:#696969">// Only one needs to be the payer</span><span> </span><span> </span><span class="hljs-function" style="color:#007faa">prepare</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">acct1: &Account, acct2: &Account</span><span class="hljs-function">)</span><span> { </span><span> log(</span><span style="color:#008000">"Acquire things from both authorizing accounts' storage"</span><span>) </span> } execute { <span> </span><span style="color:#696969">// Call multiple contracts in a single transaction</span><span> </span> FooContract.foo() BarContract.bar() } post { <span> FooContract.callCount == before(FooContract.callCount + </span><span style="color:#aa5d00">1</span><span>): </span><span> </span><span style="color:#008000">"Post-assertions must pass or the whole transaction reverts"</span><span> </span> } } </code></pre></div></div><div class="cadence-new__features-media is--purple"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Standard way for a project to represent its basic metadata</span><span> </span>access(all) struct Display { <span> access(all) </span><span style="color:#7928a1">let</span><span> name: </span><span style="color:#aa5d00">String</span><span> </span><span> access(all) </span><span style="color:#7928a1">let</span><span> description: Address </span><span> access(all) </span><span style="color:#7928a1">let</span><span> thumbnail: {File} </span>} <span></span><span style="color:#696969">// Standard way for a resource object</span><span> </span><span></span><span style="color:#696969">// to return arbitrary metadata views that it supports</span><span> </span>access(all) resource interface Resolver { <span> </span><span style="color:#696969">// Caller specifies which type of metadata it is looking for</span><span> </span><span> </span><span style="color:#696969">// and the function returns the relevant representation</span><span> </span> access(all) fun resolveView(_ view: Type): AnyStruct? } </code></pre></div></div><div class="cadence-new__features-media is--purple"><div class="code-snippet__window is--cadence-new"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>access(all) attachment Skin </span><span style="color:#7928a1">for</span><span> GamePiece.NFT { </span><span> access(all) </span><span style="color:#7928a1">let</span><span> skinType: </span><span style="color:#aa5d00">String</span><span> </span> <span> </span><span class="hljs-function" style="color:#007faa">init</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">_ skinType: </span><span class="hljs-function" style="color:#aa5d00">String</span><span class="hljs-function">)</span><span> { </span> self.skinType = skinType } } access(all) fun addAttachmentTo( nft: @GamePiece.NFT, <span> </span><span class="hljs-attr">skinType</span><span>: </span><span style="color:#aa5d00">String</span><span> </span>): @GamePiece.NFT { <span> </span><span style="color:#7928a1">if</span><span> nft[Skin] != nil { </span><span> </span><span style="color:#696969">// Skin attachment already attached - return</span><span> </span><span> </span><span style="color:#7928a1">return</span><span> <- nft </span> } // Attach the Skin & return return <- attach Skin(skinType) to <- nft } </code></pre></div></div></div><div id="w-node-_067d00a5-3a9c-2db1-e06b-55bfc30a6b10-f5ced840" class="features-tabs__navigation"><div class="features-tabs__tab-item is--active"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.291 15.7217L18.291 12.7217L15.291 9.72168M10.291 9.72168L7.29102 12.7217L10.291 15.7217M8.59102 21.7217H16.991C18.6712 21.7217 19.5113 21.7217 20.153 21.3947C20.7175 21.1071 21.1764 20.6481 21.464 20.0837C21.791 19.4419 21.791 18.6018 21.791 16.9217V8.52168C21.791 6.84152 21.791 6.00144 21.464 5.35971C21.1764 4.79522 20.7175 4.33628 20.153 4.04866C19.5113 3.72168 18.6712 3.72168 16.991 3.72168H8.59102C6.91086 3.72168 6.07078 3.72168 5.42904 4.04866C4.86456 4.33628 4.40562 4.79522 4.118 5.35971C3.79102 6.00144 3.79102 6.84152 3.79102 8.52168V16.9217C3.79102 18.6018 3.79102 19.4419 4.118 20.0837C4.40562 20.6481 4.86456 21.1071 5.42904 21.3947C6.07078 21.7217 6.91086 21.7217 8.59102 21.7217Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">User-Friendly Syntax</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li>Inspired by Swift and Rust, making it <strong>intuitive and easy to read</strong>.</li><li>Reduces developer friction with <strong>clear, explicit code structures</strong>.</li></ul><p><a href="https://cadence-lang.org/docs/language#syntax-and-behavior" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile is--purple"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span> </span><span>access(all) view fun sayHello(name: </span><span style="color:#aa5d00">String</span><span>): </span><span style="color:#aa5d00">String</span><span> { </span><span> </span><span style="color:#7928a1">return</span><span> </span><span style="color:#008000">"Hello, \(name)"</span><span> </span>} </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 2.4996V11.9996M12 11.9996L20.5 7.27731M12 11.9996L3.5 7.27731M12 11.9996V21.4996M20.5 16.7218L12.777 12.4313C12.4934 12.2737 12.3516 12.1949 12.2015 12.1641C12.0685 12.1367 11.9315 12.1367 11.7986 12.1641C11.6484 12.1949 11.5066 12.2737 11.223 12.4313L3.5 16.7218M21 16.0582V7.94104C21 7.5984 21 7.42708 20.9495 7.27428C20.9049 7.1391 20.8318 7.01502 20.7354 6.91033C20.6263 6.79199 20.4766 6.70879 20.177 6.54239L12.777 2.43128C12.4934 2.27372 12.3516 2.19494 12.2015 2.16406C12.0685 2.13672 11.9315 2.13672 11.7986 2.16406C11.6484 2.19494 11.5066 2.27372 11.223 2.43128L3.82297 6.54239C3.52345 6.70879 3.37369 6.792 3.26463 6.91033C3.16816 7.01502 3.09515 7.1391 3.05048 7.27428C3 7.42708 3 7.5984 3 7.94104V16.0582C3 16.4008 3 16.5721 3.05048 16.7249C3.09515 16.8601 3.16816 16.9842 3.26463 17.0889C3.37369 17.2072 3.52345 17.2904 3.82297 17.4568L11.223 21.5679C11.5066 21.7255 11.6484 21.8042 11.7986 21.8351C11.9315 21.8625 12.0685 21.8625 12.2015 21.8351C12.3516 21.8042 12.4934 21.7255 12.777 21.5679L20.177 17.4568C20.4766 17.2904 20.6263 17.2072 20.7354 17.0889C20.8318 16.9842 20.9049 16.8601 20.9495 16.7249C21 16.5721 21 16.4008 21 16.0582Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Blockchain Native Features</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Efficient storage management</strong> using structured account storage.</li><li><strong>Native event support </strong>for on-chain event tracking.</li><li><strong>Integrated cryptography</strong> for digital signatures and hashing.</li></ul><p><a href="https://cadence-lang.org/docs/language/built-in-functions" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile is--purple"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>access(all) event SignatureVerified(publicKey: </span><span style="color:#aa5d00">String</span><span>, </span><span class="hljs-attr">signature</span><span>: </span><span style="color:#aa5d00">String</span><span>) </span> <span></span><span style="color:#7928a1">let</span><span> pk = PublicKey( </span><span> publicKey: </span><span style="color:#008000">"96142CE0C5ECD869DC88C8960E286AF1CE1B29F329BA4964213934731E65A1DE480FD43EF123B9633F0A90434C6ACE0A98BB9A999231DB3F477F9D3623A6A4ED"</span><span>.decodeHex(), </span><span> </span><span class="hljs-attr">signatureAlgorithm</span><span>: SignatureAlgorithm.ECDSA_P256 </span>) <span></span><span style="color:#7928a1">let</span><span> signature = </span><span style="color:#008000">"108EF718F153CFDC516D8040ABF2C8CC7AECF37C6F6EF357C31DFE1F7AC79C9D0145D1A2F08A48F1A2489A84C725D6A7AB3E842D9DC5F8FE8E659FFF5982310D"</span><span>.decodeHex() </span><span></span><span style="color:#7928a1">let</span><span> message : [UInt8] = [</span><span style="color:#aa5d00">1</span><span>, </span><span style="color:#aa5d00">2</span><span>, </span><span style="color:#aa5d00">3</span><span>] </span> <span></span><span style="color:#7928a1">let</span><span> isValid = pk.verify( </span> signature: signature, <span> </span><span class="hljs-attr">signedData</span><span>: message, </span><span> </span><span class="hljs-attr">domainSeparationTag</span><span>: </span><span style="color:#008000">""</span><span>, </span><span> </span><span class="hljs-attr">hashAlgorithm</span><span>: HashAlgorithm.SHA2_256 </span>) <span></span><span style="color:#7928a1">if</span><span> isValid { emit SignatureVerified(publicKey: publicKey, </span><span class="hljs-attr">signature</span><span>: signature) </span> </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M13.0008 2L4.09429 12.6879C3.74549 13.1064 3.57108 13.3157 3.56842 13.4925C3.5661 13.6461 3.63457 13.7923 3.7541 13.8889C3.89159 14 4.16402 14 4.70887 14H12.0008L11.0008 22L19.9074 11.3121C20.2562 10.8936 20.4306 10.6843 20.4333 10.5075C20.4356 10.3539 20.3671 10.2077 20.2476 10.1111C20.1101 10 19.8377 10 19.2928 10H12.0008L13.0008 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Gas-less Experiences & New Business Models</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li>Separate transaction logic to enable <strong>gas-less experiences</strong> sponsored by applications.</li><li><strong>Protocol-level multicall</strong> to combine multiple transactions into one with a single approval.</li><li>Supports <strong>atomic swaps, multisig, and multiauth transactions.</strong></li><li>Enables new business models like <strong>freemium experiences, subscriptions, and removing third-party dependencies</strong>.</li></ul><p><a href="https://cadence-lang.org/docs/language/transactions" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile is--purple"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>transaction { </span> <span> </span><span style="color:#696969">// Authorize with multiple accounts</span><span> </span><span> </span><span style="color:#696969">// Only one needs to be the payer</span><span> </span><span> </span><span class="hljs-function" style="color:#007faa">prepare</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">acct1: &Account, acct2: &Account</span><span class="hljs-function">)</span><span> { </span><span> log(</span><span style="color:#008000">"Acquire things from both authorizing accounts' storage"</span><span>) </span> } execute { <span> </span><span style="color:#696969">// Call multiple contracts in a single transaction</span><span> </span> FooContract.foo() BarContract.bar() } post { <span> FooContract.callCount == before(FooContract.callCount + </span><span style="color:#aa5d00">1</span><span>): </span><span> </span><span style="color:#008000">"Post-assertions must pass or the whole transaction reverts"</span><span> </span> } } </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21.2 22C21.48 22 21.62 22 21.727 21.9455C21.8211 21.8976 21.8976 21.8211 21.9455 21.727C22 21.62 22 21.48 22 21.2V10.8C22 10.52 22 10.38 21.9455 10.273C21.8976 10.1789 21.8211 10.1024 21.727 10.0545C21.62 10 21.48 10 21.2 10L18.8 10C18.52 10 18.38 10 18.273 10.0545C18.1789 10.1024 18.1024 10.1789 18.0545 10.273C18 10.38 18 10.52 18 10.8V13.2C18 13.48 18 13.62 17.9455 13.727C17.8976 13.8211 17.8211 13.8976 17.727 13.9455C17.62 14 17.48 14 17.2 14H14.8C14.52 14 14.38 14 14.273 14.0545C14.1789 14.1024 14.1024 14.1789 14.0545 14.273C14 14.38 14 14.52 14 14.8V17.2C14 17.48 14 17.62 13.9455 17.727C13.8976 17.8211 13.8211 17.8976 13.727 17.9455C13.62 18 13.48 18 13.2 18H10.8C10.52 18 10.38 18 10.273 18.0545C10.1789 18.1024 10.1024 18.1789 10.0545 18.273C10 18.38 10 18.52 10 18.8V21.2C10 21.48 10 21.62 10.0545 21.727C10.1024 21.8211 10.1789 21.8976 10.273 21.9455C10.38 22 10.52 22 10.8 22L21.2 22Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M10 6.8C10 6.51997 10 6.37996 10.0545 6.273C10.1024 6.17892 10.1789 6.10243 10.273 6.0545C10.38 6 10.52 6 10.8 6H13.2C13.48 6 13.62 6 13.727 6.0545C13.8211 6.10243 13.8976 6.17892 13.9455 6.273C14 6.37996 14 6.51997 14 6.8V9.2C14 9.48003 14 9.62004 13.9455 9.727C13.8976 9.82108 13.8211 9.89757 13.727 9.9455C13.62 10 13.48 10 13.2 10H10.8C10.52 10 10.38 10 10.273 9.9455C10.1789 9.89757 10.1024 9.82108 10.0545 9.727C10 9.62004 10 9.48003 10 9.2V6.8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M3 12.8C3 12.52 3 12.38 3.0545 12.273C3.10243 12.1789 3.17892 12.1024 3.273 12.0545C3.37996 12 3.51997 12 3.8 12H6.2C6.48003 12 6.62004 12 6.727 12.0545C6.82108 12.1024 6.89757 12.1789 6.9455 12.273C7 12.38 7 12.52 7 12.8V15.2C7 15.48 7 15.62 6.9455 15.727C6.89757 15.8211 6.82108 15.8976 6.727 15.9455C6.62004 16 6.48003 16 6.2 16H3.8C3.51997 16 3.37996 16 3.273 15.9455C3.17892 15.8976 3.10243 15.8211 3.0545 15.727C3 15.62 3 15.48 3 15.2V12.8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M2 2.8C2 2.51997 2 2.37996 2.0545 2.273C2.10243 2.17892 2.17892 2.10243 2.273 2.0545C2.37996 2 2.51997 2 2.8 2H5.2C5.48003 2 5.62004 2 5.727 2.0545C5.82108 2.10243 5.89757 2.17892 5.9455 2.273C6 2.37996 6 2.51997 6 2.8V5.2C6 5.48003 6 5.62004 5.9455 5.727C5.89757 5.82108 5.82108 5.89757 5.727 5.9455C5.62004 6 5.48003 6 5.2 6H2.8C2.51997 6 2.37996 6 2.273 5.9455C2.17892 5.89757 2.10243 5.82108 2.0545 5.727C2 5.62004 2 5.48003 2 5.2V2.8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Future-proof Interoperable Assets</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Custom metadata</strong> at the asset level ensures <strong>future interoperability</strong> with evolving standards.</li><li><strong>Guaranteed backward compatibility</strong> for existing assets and smart contracts.</li><li><strong>Metadata unlocks new features</strong> such as readable royalties by any exchange or adding creator social media links in NFTs for application frontends.</li></ul><p><a href="https://cadence-lang.org/docs/language/contract-updatability#structs-resources-and-interfaces" target="_blank">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile is--purple"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span style="color:#696969">// Standard way for a project to represent its basic metadata</span><span> </span>access(all) struct Display { <span> access(all) </span><span style="color:#7928a1">let</span><span> name: </span><span style="color:#aa5d00">String</span><span> </span><span> access(all) </span><span style="color:#7928a1">let</span><span> description: Address </span><span> access(all) </span><span style="color:#7928a1">let</span><span> thumbnail: {File} </span>} <span></span><span style="color:#696969">// Standard way for a resource object</span><span> </span><span></span><span style="color:#696969">// to return arbitrary metadata views that it supports</span><span> </span>access(all) resource interface Resolver { <span> </span><span style="color:#696969">// Caller specifies which type of metadata it is looking for</span><span> </span><span> </span><span style="color:#696969">// and the function returns the relevant representation</span><span> </span> access(all) fun resolveView(_ view: Type): AnyStruct? } </code></pre></div></div></div></div><div class="features-tabs__tab-item"><div class="features-tabs__tab-button"><div class="features-tabs__tab-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.5 4.5C7.5 3.11929 8.61929 2 10 2C11.3807 2 12.5 3.11929 12.5 4.5V6H13.5C14.8978 6 15.5967 6 16.1481 6.22836C16.8831 6.53284 17.4672 7.11687 17.7716 7.85195C18 8.40326 18 9.10218 18 10.5H19.5C20.8807 10.5 22 11.6193 22 13C22 14.3807 20.8807 15.5 19.5 15.5H18V17.2C18 18.8802 18 19.7202 17.673 20.362C17.3854 20.9265 16.9265 21.3854 16.362 21.673C15.7202 22 14.8802 22 13.2 22H12.5V20.25C12.5 19.0074 11.4926 18 10.25 18C9.00736 18 8 19.0074 8 20.25V22H6.8C5.11984 22 4.27976 22 3.63803 21.673C3.07354 21.3854 2.6146 20.9265 2.32698 20.362C2 19.7202 2 18.8802 2 17.2V15.5H3.5C4.88071 15.5 6 14.3807 6 13C6 11.6193 4.88071 10.5 3.5 10.5H2C2 9.10218 2 8.40326 2.22836 7.85195C2.53284 7.11687 3.11687 6.53284 3.85195 6.22836C4.40326 6 5.10218 6 6.5 6H7.5V4.5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div><div class="features-tabs__tab-name"><div class="features-tabs__tab-name-text">Modable Contracts</div></div></div><div class="features-tabs__tab-content"><div class="spacer-small"></div><div class="text-rich-text w-richtext"><ul role="list"><li><strong>Attachments</strong> in Cadence 1.0 allow developers to add additional data and functionality to existing contracts and types <strong>without requiring permission from the original contract author</strong>.</li><li>Empowers <strong>communities to evolve and extend products permissionlessly</strong>, enabling new applications such as:<strong></strong><ul role="list" class="sublist"><li>Fact-checking in SocialFi.</li><li>Extendable games.</li><li>NFTs enhanced with accessories or DeFi yield bonuses.</li></ul></li></ul><p><a href="https://cadence-lang.org/docs/language/attachments">Learn more</a></p></div></div><div class="features-tabs__media-mobile"><div class="cadence-new__features-media is--mobile is--purple"><div class="code-snippet__window is--cadence-new is--mobile"><div class="code-snippet__window-top-bar"><div class="code-snippet__window-actions"><div class="code-snippet__window-dot"></div><div class="code-snippet__window-dot is--2"></div><div class="code-snippet__window-dot is--3"></div></div></div><pre contenteditable="false" class="code-snippet__code w-code-block" style="display:block;overflow-x:auto;background:#fefefe;color:#545454;padding:0.5em"><code class="language-javascript" style="white-space:pre"><span>access(all) attachment Skin </span><span style="color:#7928a1">for</span><span> GamePiece.NFT { </span><span> access(all) </span><span style="color:#7928a1">let</span><span> skinType: </span><span style="color:#aa5d00">String</span><span> </span> <span> </span><span class="hljs-function" style="color:#007faa">init</span><span class="hljs-function">(</span><span class="hljs-function" style="color:#aa5d00">_ skinType: </span><span class="hljs-function" style="color:#aa5d00">String</span><span class="hljs-function">)</span><span> { </span> self.skinType = skinType } } access(all) fun addAttachmentTo( nft: @GamePiece.NFT, <span> </span><span class="hljs-attr">skinType</span><span>: </span><span style="color:#aa5d00">String</span><span> </span>): @GamePiece.NFT { <span> </span><span style="color:#7928a1">if</span><span> nft[Skin] != nil { </span><span> </span><span style="color:#696969">// Skin attachment already attached - return</span><span> </span><span> </span><span style="color:#7928a1">return</span><span> <- nft </span> } // Attach the Skin & return return <- attach Skin(skinType) to <- nft } </code></pre></div></div></div></div></div></div><div class="hide w-embed"><style> .features-tabs__tab-item {opacity:0.5;} .features-tabs__tab-item.is--active {opacity:1;} .features-tabs__tab-item .features-tabs__tab-content{opacity:0; height:0;} .features-tabs__tab-item.is--active .features-tabs__tab-content{opacity:1; height:auto;} .features-tabs__media-mobile {display:none;} @media (max-width: 767px) { .features-tabs__tab-item.is--active .features-tabs__media-mobile { display: block; } } .features-tabs__tab-item.is--active .features-tabs__tab-icon{color:var(--green--700)} .is--tabs-purple .features-tabs__tab-item.is--active {border-color:#E190FF;} .is--tabs-purple .features-tabs__tab-item.is--active .features-tabs__tab-icon{color:#B75FD8;} .features-tabs__media-desktop .cadence-new__features-media {display:none;} .features-tabs__media-desktop .cadence-new__features-media.is--active {display:flex;} @keyframes fadeInOnce { from { opacity: 0; } to { opacity: 1; } } .cadence-new__features-media.is--active .code-snippet__window { animation: fadeInOnce 1s ease forwards; } </style></div><div class="hide w-embed w-script"><script> function cycleAllFeatureTabs() { const components = document.querySelectorAll('.features-tabs__component'); components.forEach(component => { const tabs = component.querySelectorAll('.features-tabs__tab-item'); const mediaItems = component.querySelectorAll('.features-tabs__media-desktop .cadence-new__features-media'); if (tabs.length === 0 || mediaItems.length === 0) return; let currentIndex = Array.from(tabs).findIndex(tab => tab.classList.contains('is--active')); if (currentIndex === -1) currentIndex = 0; let interval = setInterval(switchToNextTab, 5000); function switchToIndex(index) { // Remove .is--active from all tabs and media tabs.forEach(tab => tab.classList.remove('is--active')); mediaItems.forEach(media => media.classList.remove('is--active')); // Add .is--active to the selected tab and media if (tabs[index]) tabs[index].classList.add('is--active'); if (mediaItems[index]) mediaItems[index].classList.add('is--active'); currentIndex = index; } function switchToNextTab() { const nextIndex = (currentIndex + 1) % tabs.length; switchToIndex(nextIndex); } // Attach click listeners tabs.forEach((tab, index) => { tab.addEventListener('click', () => { if (index === currentIndex) return; clearInterval(interval); // stop auto-switching for this component switchToIndex(index); }); }); }); } document.addEventListener('DOMContentLoaded', cycleAllFeatureTabs); </script></div></div><div class="spacer-large"></div><div class="button-group is-center"><a href="https://cadencelang.org" target="_blank" class="button w-inline-block"><div class="button-content has-icon"><div class="text-size-small">Discover Cadence</div></div></a></div></div></div></div></section><section id="cadence-vs" class="section-wrapper bg-color-green-50"></section><section id="get-started" class="section-wrapper is--bg-gradient-purple"><div class="padding-global"><div class="padding-section-large"><div class="container-xlarge"><div class="cadence-new__cta"><div class="text-align-center"><div class="flex-vertical-center"><h2 class="heading-large"><strong>Start Building with Cadence</strong></h2><div class="spacer-xsmall"></div><div class="max-width-small"><div>Explore tutorials, docs, and the Cadence playground.</div></div></div></div><div class="spacer-large"></div><div class="cadence-new__grid-benefits"><a href="https://cadence-lang.org/docs/tutorial/first-steps" target="_blank" class="cadence-new__cta-card w-inline-block"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 20H5.2C4.07989 20 3.51984 20 3.09202 19.782C2.71569 19.5903 2.40973 19.2843 2.21799 18.908C2 18.4802 2 17.9201 2 16.8V7.2C2 6.07989 2 5.51984 2.21799 5.09202C2.40973 4.71569 2.71569 4.40973 3.09202 4.21799C3.51984 4 4.07989 4 5.2 4H5.6C7.84021 4 8.96031 4 9.81596 4.43597C10.5686 4.81947 11.1805 5.43139 11.564 6.18404C12 7.03968 12 8.15979 12 10.4M12 20V10.4M12 20H18.8C19.9201 20 20.4802 20 20.908 19.782C21.2843 19.5903 21.5903 19.2843 21.782 18.908C22 18.4802 22 17.9201 22 16.8V7.2C22 6.07989 22 5.51984 21.782 5.09202C21.5903 4.71569 21.2843 4.40973 20.908 4.21799C20.4802 4 19.9201 4 18.8 4H18.4C16.1598 4 15.0397 4 14.184 4.43597C13.4314 4.81947 12.8195 5.43139 12.436 6.18404C12 7.03968 12 8.15979 12 10.4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Learn Cadence</div></a><a href="https://play.onflow.org" target="_blank" class="cadence-new__cta-card w-inline-block"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 3.5V2M5.06066 5.06066L4 4M5.06066 13L4 14.0607M13 5.06066L14.0607 4M3.5 9H2M8.5 8.5L12.6111 21.2778L15.5 18.3889L19.1111 22L22 19.1111L18.3889 15.5L21.2778 12.6111L8.5 8.5Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">Try the Playground</div></a><a href="https://developers.flow.com/cadence" target="_blank" class="cadence-new__cta-card w-inline-block"><div class="cadence-new__benefits-icon-wrap"><div class="cadence-new__benefits-icon-embeed w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14 11H8M10 15H8M16 7H8M20 6.8V17.2C20 18.8802 20 19.7202 19.673 20.362C19.3854 20.9265 18.9265 21.3854 18.362 21.673C17.7202 22 16.8802 22 15.2 22H8.8C7.11984 22 6.27976 22 5.63803 21.673C5.07354 21.3854 4.6146 20.9265 4.32698 20.362C4 19.7202 4 18.8802 4 17.2V6.8C4 5.11984 4 4.27976 4.32698 3.63803C4.6146 3.07354 5.07354 2.6146 5.63803 2.32698C6.27976 2 7.11984 2 8.8 2H15.2C16.8802 2 17.7202 2 18.362 2.32698C18.9265 2.6146 19.3854 3.07354 19.673 3.63803C20 4.27976 20 5.11984 20 6.8Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg></div></div><div class="text-size-large text-weight-semibold">View Docs</div></a></div></div></div></div></div></section></main><footer class="section-footer"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-medium"><div class="w-layout-grid _3-footer-grid"><div><a id="w-node-_8fa4cb87-376c-0341-bcd5-dedb0834e718-0834e712" href="https://flow.com/" class="footer-logo-link w-inline-block"><img src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63ce603ae36f46f6bb67e51e_flow-logo.svg" loading="lazy" alt="flow logo" class="footer-logo-img"/></a><div class="footer-social-icons"><a aria-label="Visit our Twitter profile" href="https://twitter.com/flow_blockchain" target="_blank" class="footer-social-icon w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/64f4740e89a029c41f7821cf_X%20-%20Negative.svg" alt="Twitter logo"/></a><a aria-label="Visit our Instagram profile" href="https://www.instagram.com/flowblockchain" target="_blank" class="footer-social-icon w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63cec770799e2958d15306a0_Instagram%20-%20Negative.svg" alt="Instagram Logo"/></a><a aria-label="Visit our Youtube profile" href="https://www.youtube.com/@FlowBlockchain" target="_blank" class="footer-social-icon w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63cec77005a49eaba248e147_YouTube%20-%20Negative.svg" alt="Youtube Logo"/></a><a aria-label="Visit our Telegram profile" href="https://t.me/flow_blockchain" target="_blank" class="footer-social-icon w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63cec770b75d5482a08014db_Telegram%20-%20Negative.svg" alt="Telegram Logo"/></a><a aria-label="Visit our Discord profile" href="https://discord.com/invite/J6fFnh2xx6" target="_blank" class="footer-social-icon last w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/63d0398494fe5d96e72f4cc0_Social%20Icon.svg" alt="Discord logo"/></a></div></div><div id="w-node-_8fa4cb87-376c-0341-bcd5-dedb0834e725-0834e712" class="footer-nav__column"><div class="footer-column-header">Start Building</div><div class="footer-nav__list"><a href="https://developers.flow.com/" target="_blank" class="new-footer-link">Developer portal</a><a href="https://github.com/onflow" target="_blank" class="new-footer-link">GitHub</a></div></div><div id="w-node-_8fa4cb87-376c-0341-bcd5-dedb0834e72c-0834e712" class="footer-nav__column"><div class="footer-column-header">Flow</div><div class="footer-nav__list"><a href="https://docs.google.com/forms/d/e/1FAIpQLSer5ZX0pRWsXF0U0bsgW4Zo8Pmlw0V927ZydDq_ej-qyIJ9_A/viewform" target="_blank" class="new-footer-link">Business Development</a><a href="/node-operation" class="new-footer-link">Node Operation</a><a href="/token-distribution" class="new-footer-link">Coin Distribution</a><a href="https://flow.com/flow-tokenomics/technical-overview" class="new-footer-link">Flow Tokenomics</a><a href="/mediakit" class="new-footer-link">Flow.com Logo & Mediakit</a><a href="/careers" class="new-footer-link">Careers</a><a href="/faq" class="new-footer-link">FAQ</a></div></div><div id="w-node-_8fa4cb87-376c-0341-bcd5-dedb0834e73b-0834e712" class="footer-nav__column"><div class="footer-column-header">Get Connected</div><div class="footer-nav__list"><a href="/blog" class="new-footer-link">Blog</a><a href="https://port.onflow.org/" target="_blank" class="new-footer-link">Flow Port</a><a href="https://www.flowverse.co/" target="_blank" class="new-footer-link">Flowverse</a></div></div></div><div class="spacer-medium"></div><div class="div-block-129"><div class="footer-copyright">© <span class="copyright-year">2025</span> All Rights Reserved</div></div></div></div></div></footer><div class="code-global-revamp w-embed"><style> html { /* Adjust font size */ font-size: 100%; -webkit-text-size-adjust: 100%; /* Font varient */ font-variant-ligatures: none; -webkit-font-variant-ligatures: none; /* Smoothing */ text-rendering: optimizeLegibility; -moz-osx-font-smoothing: grayscale; font-smoothing: antialiased; -webkit-font-smoothing: antialiased; text-shadow: rgba(0, 0, 0, .01) 0 0 1px; } /* Fixes to typography conflicts */ /* Override old theme default styles */ p {line-height: 1.4 !important; margin-bottom:0;} a {color:inherit;} .body-epilogue h1,.body-epilogue h2,.body-epilogue h3,.body-epilogue h4,.body-epilogue h5,.body-epilogue h6 {font-family: Epilogue,sans-serif; margin: 0; } .text-weight-bold {font-weight: 700 !important;} .text-weight-medium {font-weight: 500 !important;} .text-weight-regular {font-weight: 400 !important;} /* Get rid of bottom margin on last element in any rich text element */ .w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child { margin-bottom: 0; } /* Make sure Client-first spacing system works */ .padding-top{ padding-bottom: 0!important; padding-left: 0!important; padding-right: 0!important; } .padding-bottom{ padding-top: 0!important; padding-left: 0!important; padding-right: 0!important; } .padding-left{ padding-top: 0!important; padding-bottom: 0!important; padding-right: 0!important; } .padding-rigt{ padding-top: 0!important; padding-left: 0!important; padding-bottom: 0!important; } .padding-top{ padding-bottom: 0!important; padding-left: 0!important; padding-right: 0!important; } .padding-vertical{ padding-left: 0!important; padding-right: 0!important; } /* Max Font Size */ @media screen and (min-width:1440px) { body {font-size: 16px;} } /* Snippet prevents all click and hover interaction with an element */ .clickable-off { pointer-events: none; } /* Snippet enables all click and hover interaction with an element */ .clickable-on{ pointer-events: auto; } /* 2024 THEME - BEGIN */ /* Nav open animate icon */ .new-nav-link.w--open .nav-link-dropdown-icon::before {transform: rotate(180deg);} .new-nav-link .nav-link-dropdown-icon::before {transition: transform 0.3s ease-out;display:block;} /* Styles footer */ .footer-nav__list, .footer-social-icons { transition: opacity 0.3s ease-out; } /* Circle animation links footer */ .new-footer-link { position:relative; transition: padding-left 0.3s ease-out; } .new-footer-link::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 0; height: 0; background-color: var(--green--500-flow-green); border-radius: 50%; transition: width 0.3s ease-out, height 0.3s ease-out; } .new-footer-link:hover { padding-left: 1rem; } .new-footer-link:hover::before { width: 9px; height: 9px; } .footer-social-icons:hover .footer-social-icon:not( :hover) { opacity: 0.5; } .social-icons1_list:hover .social-icons1_link:not( :hover ) {opacity:0.5;} /* Components */ /* Visual Banner */ .visual-banner:hover .visual-banner__image {transform: scale(1.05);} /* 2024 THEME - END */ </style></div><div class="code-styles-splide w-embed"><style> /* Styles for Splide */ .splide__pagination__page.is-active {background:#ffffff; transform: scale(1);} .splide__pagination__page {background:#16ff99;} .sp-card__quote-text strong{color:#ffffff;} .splide__pagination {column-gap: 20px;} .splide__pagination__page {width:14px; height:14px}; @media screen and (max-width:478px){ .splide__pagination {column-gap: 12px;} .splide__pagination__page {width:10px; height:10px}; } </style></div><div class="code-page w-embed"><style> .app-card:hover .app-card_image {transform: scale(1.05);} .content-card:hover .content-card_heading {text-decoration:underline;} .content-card:hover .content-card_image {transform: scale(1.05);} .content-card:hover .content-card_heading {text-decoration:underline;} .overlay-card:hover .overlay-card_image {transform: scale(1.1);} .overlay-card:hover .overlay-card_heading {text-decoration:underline;} @media (max-width: 768px) { .hero-bg__wrap { display: none; } } </style></div></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=5f734f4dbd95382f4fdfa0ea" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/js/webflow.schunk.4a394eb5af8156f2.js" type="text/javascript"></script><script src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/js/webflow.schunk.bb4e00c9f8629818.js" type="text/javascript"></script><script src="https://cdn.prod.website-files.com/5f734f4dbd95382f4fdfa0ea/js/webflow.410bbecf.49e5ec1111a3f0b6.js" type="text/javascript"></script><!--Customer.io Subscription Form integration--> <script type="text/javascript"> (function() { var t = document.createElement('script'), s = document.getElementsByTagName('script')[0]; t.async = true; t.id = 'cio-forms-handler'; t.setAttribute('data-site-id', '64a3b711ab0fcfa29948'); t.setAttribute('data-base-url', 'https://customerioforms.com'); t.src = 'https://customerioforms.com/assets/forms.js'; s.parentNode.insertBefore(t, s); })(); </script> <!--Notification Bar cookie settings --> <script src="https://cdn.jsdelivr.net/npm/js-cookie/dist/js.cookie.min.js"></script> <script> $(document).ready(function() { // Check if the cookie exists if (typeof Cookies.get("notification") !== 'undefined') { $('.top-bar_component').remove(); } // Bind click event to close button $(document).on('click', '.banner10_close-button', function() { Cookies.set('notification', 'notification closed', { expires: 7, secure: true }); }); }); </script> <script> Webflow.push(function() { $('.copyright-year').text(new Date().getFullYear()); }); </script></body></html>