CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Understanding the Mutability of Solidity Functions: A Deep Dive | by Solidity Academy | Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2023-10-09T08:12:03.998Z"/><meta data-rh="true" name="title" content="Understanding the Mutability of Solidity Functions: A Deep Dive | by Solidity Academy | Medium"/><meta data-rh="true" property="og:title" content="Understanding the Mutability of Solidity Functions: A Deep Dive"/><meta data-rh="true" property="al:android:url" content="medium://p/eeb0e7cbeeff"/><meta data-rh="true" property="al:ios:url" content="medium://p/eeb0e7cbeeff"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how functions interact with the blockchain. These specifiers play a…"/><meta data-rh="true" property="og:description" content="📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how…"/><meta data-rh="true" property="og:url" content="https://medium.com/@solidity101/understanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff"/><meta data-rh="true" property="al:web:url" content="https://medium.com/@solidity101/understanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/da:true/resize:fit:1200/0*4ssYokPVrEFtQFED"/><meta data-rh="true" property="article:author" content="https://medium.com/@solidity101"/><meta data-rh="true" name="author" content="Solidity Academy"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Understanding the Mutability of Solidity Functions: A Deep Dive"/><meta data-rh="true" name="twitter:site" content="@Medium"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/eeb0e7cbeeff"/><meta data-rh="true" property="twitter:description" content="📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how…"/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/da:true/resize:fit:1200/0*4ssYokPVrEFtQFED"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:creator" content="@solidity101"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="5 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" rel="preconnect" href="https://glyph.medium.com" crossOrigin=""/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@solidity101"/><link data-rh="true" rel="canonical" href="https://medium.com/@solidity101/understanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/eeb0e7cbeeff"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fda:true\u002Fresize:fit:1200\u002F0*4ssYokPVrEFtQFED"],"url":"https:\u002F\u002Fmedium.com\u002F@solidity101\u002Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff","dateCreated":"2023-10-09T08:12:03.998Z","datePublished":"2023-10-09T08:12:03.998Z","dateModified":"2023-10-10T05:27:20.227Z","headline":"Understanding the Mutability of Solidity Functions: A Deep Dive","name":"Understanding the Mutability of Solidity Functions: A Deep Dive","description":"📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how functions interact with the blockchain. These specifiers play a…","identifier":"eeb0e7cbeeff","author":{"@type":"Person","name":"Solidity Academy","url":"https:\u002F\u002Fmedium.com\u002F@solidity101"},"creator":["Solidity Academy"],"publisher":{"@type":"Organization","name":"Medium","url":"https:\u002F\u002Fmedium.com\u002F","logo":{"@type":"ImageObject","width":272,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:544\u002F7*V1_7XP4snlmqrc_0Njontw.png"}},"mainEntityOfPage":"https:\u002F\u002Fmedium.com\u002F@solidity101\u002Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff"}</script><style type="text/css" data-fela-rehydration="552" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="552" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:#1A8917}.es{border-color:#1A8917}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:#1A8917}.ez:disabled:hover{border-color:#1A8917}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fu{display:none}.ga{margin:0 24px}.ge{background:rgba(255, 255, 255, 1)}.gf{border:1px solid #F2F2F2}.gg{box-shadow:0 1px 4px #F2F2F2}.gh{max-height:100vh}.gi{overflow-y:auto}.gj{left:0}.gk{top:calc(100vh + 100px)}.gl{bottom:calc(100vh + 100px)}.gm{width:10px}.gn{pointer-events:none}.go{word-break:break-word}.gp{word-wrap:break-word}.gq:after{display:block}.gr:after{content:""}.gs:after{clear:both}.gt{line-height:1.23}.gu{letter-spacing:0}.gv{font-style:normal}.gw{font-weight:700}.ib{align-items:baseline}.ic{width:48px}.id{height:48px}.ie{border:2px solid rgba(255, 255, 255, 1)}.if{z-index:0}.ig{box-shadow:none}.ih{border:1px solid rgba(0, 0, 0, 0.05)}.ii{margin-bottom:2px}.ij{flex-wrap:nowrap}.ik{font-size:16px}.il{line-height:24px}.in{margin-left:2px}.io{margin-top:1px}.ip{cursor:initial}.iq{margin:0 8px}.ir{display:inline}.is{color:#1A8917}.it{fill:#1A8917}.iw{flex:0 0 auto}.iz{flex-wrap:wrap}.ja{padding-left:8px}.jb{padding-right:8px}.kc> *{flex-shrink:0}.kd{overflow-x:scroll}.ke::-webkit-scrollbar{display:none}.kf{scrollbar-width:none}.kg{-ms-overflow-style:none}.kh{width:74px}.ki{flex-direction:row}.kj{z-index:2}.kk{margin-right:4px}.kn{-webkit-user-select:none}.ko{border:0}.kp{fill:rgba(117, 117, 117, 1)}.ks{outline:0}.kt{user-select:none}.ku> svg{pointer-events:none}.ld{cursor:progress}.le{opacity:1}.lf{padding:4px 0}.li{margin-top:0px}.lj{width:16px}.ll{display:inline-flex}.lr{max-width:100%}.ls{padding:8px 2px}.lt svg{color:#6B6B6B}.mk{line-height:1.58}.ml{letter-spacing:-0.004em}.mm{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.nh{margin-bottom:-0.46em}.ni{margin-left:auto}.nj{margin-right:auto}.nk{max-width:7680px}.nq{clear:both}.ns{cursor:zoom-in}.nt{z-index:auto}.nv{height:auto}.nw{margin-top:10px}.nx{max-width:728px}.oa{text-decoration:underline}.ob{line-height:1.12}.oc{letter-spacing:-0.022em}.od{font-weight:600}.oy{margin-bottom:-0.28em}.pe{list-style-type:decimal}.pf{margin-left:30px}.pg{padding-left:0px}.ph{padding:2px 4px}.pi{font-size:75%}.pj> strong{font-family:inherit}.pk{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.pq{overflow-x:auto}.pr{padding:32px}.ps{border:1px solid #E5E5E5}.pt{line-height:1.4}.pu{margin-top:-0.2em}.pv{margin-bottom:-0.2em}.pw{white-space:pre}.px{min-width:fit-content}.py{line-height:1.18}.qm{margin-bottom:-0.31em}.qn{box-shadow:inset 3px 0 0 0 #242424}.qo{padding-left:23px}.qp{margin-left:-20px}.qq{font-style:italic}.qr{list-style-type:disc}.qs{margin-bottom:26px}.qt{margin-top:6px}.qu{margin-top:8px}.qv{margin-right:8px}.qw{padding:8px 16px}.qx{border-radius:100px}.qy{transition:background 300ms ease}.ra{white-space:nowrap}.rb{border-top:none}.rc{margin-bottom:14px}.rd{height:52px}.re{max-height:52px}.rf{box-sizing:content-box}.rg{position:static}.rh{z-index:1}.rj{max-width:155px}.rp{margin-right:20px}.rv{height:0px}.rw{margin-bottom:40px}.sl{height:64px}.sm{width:64px}.sn{align-self:flex-end}.so{color:rgba(255, 255, 255, 1)}.sp{fill:rgba(255, 255, 255, 1)}.sq{background:rgba(25, 25, 25, 1)}.sr{border-color:rgba(25, 25, 25, 1)}.su:disabled{opacity:0.1}.sv:disabled:hover{background:rgba(25, 25, 25, 1)}.sw:disabled:hover{border-color:rgba(25, 25, 25, 1)}.sx{flex:1 1 auto}.td{padding-right:4px}.te{font-weight:500}.tl{margin-top:2px}.tm{white-space:pre-wrap}.tn{margin-top:16px}.to{margin-bottom:54px}.tu{gap:18px}.tv{fill:rgba(61, 61, 61, 1)}.uc{border-bottom:solid 1px #E5E5E5}.ud{margin-top:72px}.ue{padding:24px 0}.uf{margin-bottom:0px}.ug{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:#156D12}.eu:hover{border-color:#156D12}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.im:hover{text-decoration:underline}.iu:hover:not(:disabled){color:#156D12}.iv:hover:not(:disabled){fill:#156D12}.kr:hover{fill:rgba(8, 8, 8, 1)}.lg:hover{fill:#000000}.lh:hover p{color:#000000}.lk:hover{color:#000000}.lu:hover svg{color:#000000}.qz:hover{background-color:#F2F2F2}.sk:hover{background-color:none}.ss:hover{background:#000000}.st:hover{border-color:#242424}.tw:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.kq:focus{fill:rgba(8, 8, 8, 1)}.lv:focus svg{color:#000000}.nu:focus{transform:scale(1.01)}.kv:active{border-style:none}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fz{margin-bottom:68px}.gd{max-width:680px}.hr{font-size:42px}.hs{margin-top:1.19em}.ht{margin-bottom:32px}.hu{line-height:52px}.hv{letter-spacing:-0.011em}.ia{align-items:center}.jo{border-top:solid 1px #F2F2F2}.jp{border-bottom:solid 1px #F2F2F2}.jq{margin:32px 0 0}.jr{padding:3px 8px}.ka> *{margin-right:24px}.kb> :last-child{margin-right:0}.lc{margin-top:0px}.lq{margin:0}.nd{font-size:20px}.ne{margin-top:2.14em}.nf{line-height:32px}.ng{letter-spacing:-0.003em}.np{margin-top:56px}.ou{font-size:24px}.ov{margin-top:1.95em}.ow{line-height:30px}.ox{letter-spacing:-0.016em}.pd{margin-top:0.94em}.pp{margin-top:1.14em}.qj{margin-top:1.72em}.qk{line-height:24px}.ql{letter-spacing:0}.ro{display:inline-block}.ru{margin-bottom:104px}.rx{flex-direction:row}.sa{margin-bottom:0}.sb{margin-right:20px}.sy{max-width:500px}.tt{margin-bottom:72px}.ub{padding-top:72px}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.lb{margin-top:0px}.ny{margin-left:auto}.nz{text-align:center}.rn{display:inline-block}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.la{margin-top:0px}.rm{display:inline-block}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.ky{margin-top:0px}.kz{margin-right:0px}.rl{display:inline-block}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fv{margin-bottom:4px}.gx{font-size:32px}.gy{margin-top:1.01em}.gz{margin-bottom:24px}.ha{line-height:38px}.hb{letter-spacing:-0.014em}.hw{align-items:flex-start}.ix{flex-direction:column}.jc{margin:24px -24px 0}.jd{padding:0}.js> *{margin-right:8px}.jt> :last-child{margin-right:24px}.kl{margin-left:0px}.kw{margin-top:0px}.kx{margin-right:0px}.lm{margin:0}.lw{border:1px solid #F2F2F2}.lx{border-radius:99em}.ly{padding:0px 16px 0px 12px}.lz{height:38px}.ma{align-items:center}.mc svg{margin-right:8px}.mn{font-size:18px}.mo{margin-top:1.56em}.mp{line-height:28px}.mq{letter-spacing:-0.003em}.nl{margin-top:40px}.oe{font-size:20px}.of{margin-top:1.2em}.og{line-height:24px}.oh{letter-spacing:0}.oz{margin-top:0.67em}.pl{margin-top:1.34em}.pz{font-size:16px}.qa{margin-top:1.23em}.rk{display:inline-block}.rq{margin-bottom:96px}.si{margin-bottom:20px}.sj{margin-right:0}.tc{max-width:100%}.tf{font-size:24px}.tg{line-height:30px}.th{letter-spacing:-0.016em}.tp{margin-bottom:64px}.tx{padding-top:48px}.mb:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fy{margin-bottom:68px}.gc{max-width:680px}.hm{font-size:42px}.hn{margin-top:1.19em}.ho{margin-bottom:32px}.hp{line-height:52px}.hq{letter-spacing:-0.011em}.hz{align-items:center}.jk{border-top:solid 1px #F2F2F2}.jl{border-bottom:solid 1px #F2F2F2}.jm{margin:32px 0 0}.jn{padding:3px 8px}.jy> *{margin-right:24px}.jz> :last-child{margin-right:0}.lp{margin:0}.mz{font-size:20px}.na{margin-top:2.14em}.nb{line-height:32px}.nc{letter-spacing:-0.003em}.no{margin-top:56px}.oq{font-size:24px}.or{margin-top:1.95em}.os{line-height:30px}.ot{letter-spacing:-0.016em}.pc{margin-top:0.94em}.po{margin-top:1.14em}.qg{margin-top:1.72em}.qh{line-height:24px}.qi{letter-spacing:0}.rt{margin-bottom:104px}.ry{flex-direction:row}.sc{margin-bottom:0}.sd{margin-right:20px}.sz{max-width:500px}.ts{margin-bottom:72px}.ua{padding-top:72px}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fx{margin-bottom:68px}.gb{max-width:680px}.hh{font-size:42px}.hi{margin-top:1.19em}.hj{margin-bottom:32px}.hk{line-height:52px}.hl{letter-spacing:-0.011em}.hy{align-items:center}.jg{border-top:solid 1px #F2F2F2}.jh{border-bottom:solid 1px #F2F2F2}.ji{margin:32px 0 0}.jj{padding:3px 8px}.jw> *{margin-right:24px}.jx> :last-child{margin-right:0}.lo{margin:0}.mv{font-size:20px}.mw{margin-top:2.14em}.mx{line-height:32px}.my{letter-spacing:-0.003em}.nn{margin-top:56px}.om{font-size:24px}.on{margin-top:1.95em}.oo{line-height:30px}.op{letter-spacing:-0.016em}.pb{margin-top:0.94em}.pn{margin-top:1.14em}.qd{margin-top:1.72em}.qe{line-height:24px}.qf{letter-spacing:0}.rs{margin-bottom:104px}.rz{flex-direction:row}.se{margin-bottom:0}.sf{margin-right:20px}.ta{max-width:500px}.tr{margin-bottom:72px}.tz{padding-top:72px}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fw{margin-bottom:4px}.hc{font-size:32px}.hd{margin-top:1.01em}.he{margin-bottom:24px}.hf{line-height:38px}.hg{letter-spacing:-0.014em}.hx{align-items:flex-start}.iy{flex-direction:column}.je{margin:24px 0 0}.jf{padding:0}.ju> *{margin-right:8px}.jv> :last-child{margin-right:8px}.km{margin-left:0px}.ln{margin:0}.md{border:1px solid #F2F2F2}.me{border-radius:99em}.mf{padding:0px 16px 0px 12px}.mg{height:38px}.mh{align-items:center}.mj svg{margin-right:8px}.mr{font-size:18px}.ms{margin-top:1.56em}.mt{line-height:28px}.mu{letter-spacing:-0.003em}.nm{margin-top:40px}.oi{font-size:20px}.oj{margin-top:1.2em}.ok{line-height:24px}.ol{letter-spacing:0}.pa{margin-top:0.67em}.pm{margin-top:1.34em}.qb{font-size:16px}.qc{margin-top:1.23em}.rr{margin-bottom:96px}.sg{margin-bottom:20px}.sh{margin-right:0}.tb{max-width:100%}.ti{font-size:24px}.tj{line-height:30px}.tk{letter-spacing:-0.016em}.tq{margin-bottom:64px}.ty{padding-top:48px}.mi:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="print">.ri{display:none}</style><style type="text/css" data-fela-rehydration="552" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.nr{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2Feeb0e7cbeeff&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderUser&source=---top_nav_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=---top_nav_layout_nav----------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav-----------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=---top_nav_layout_nav----------------------------------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="fu"><a rel="me" href="https://me.dm/@solidity101">Mastodon</a></div><div class="l"><div class="fv fw fx fy fz l"><div class="ab cb"><div class="ci bh ga gb gc gd"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gj gk gl gm gn"></div><div class="go gp gq gr gs"><div class="ab cb"><div class="ci bh ga gb gc gd"><div><h1 id="126b" class="pw-post-title gt gu gv bf gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv bk" data-testid="storyTitle">Understanding the Mutability of Solidity Functions: A Deep Dive</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="hw hx hy hz ia ab"><div><div class="ab ib"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@solidity101?source=post_page---byline--eeb0e7cbeeff--------------------------------"><div class="l ic id by ie if"><div class="l fj"><img alt="Solidity Academy" class="l fd by dd de cx" src="https://miro.medium.com/v2/da:true/resize:fill:88:88/0*VmhSfdMOmfv_PwWU" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="ig by l dd de fs n ih ft"></div></div></div></a></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="ii ab q"><div class="ab q ij"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b ik il bk"><a class="af ag ah ai aj ak al am an ao ap aq ar im" data-testid="authorName" rel="noopener follow" href="/@solidity101?source=post_page---byline--eeb0e7cbeeff--------------------------------">Solidity Academy</a></p></div></div></div><div class="in io l"><div class="ab ip"><div class="ab"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#437AFF" d="M15.163 8c0 .65-.459 1.144-.863 1.575-.232.244-.471.5-.563.719s-.086.543-.092.875c-.006.606-.018 1.3-.49 1.781-.47.481-1.15.494-1.744.5-.324.006-.655.013-.857.094s-.465.337-.704.575c-.422.412-.906.881-1.542.881-.637 0-1.12-.469-1.543-.881-.239-.238-.49-.482-.704-.575-.214-.094-.532-.088-.857-.094-.593-.006-1.273-.019-1.744-.5s-.484-1.175-.49-1.781c-.006-.332-.012-.669-.092-.875-.08-.207-.33-.475-.563-.719-.404-.431-.863-.925-.863-1.575s.46-1.144.863-1.575c.233-.244.472-.5.563-.719.092-.219.086-.544.092-.875.006-.606.019-1.3.49-1.781s1.15-.494 1.744-.5c.325-.006.655-.012.857-.094.202-.081.465-.337.704-.575C7.188 1.47 7.671 1 8.308 1s1.12.469 1.542.881c.239.238.49.481.704.575s.533.088.857.094c.594.006 1.273.019 1.745.5.47.481.483 1.175.49 1.781.005.331.011.669.091.875s.33.475.563.719c.404.431.863.925.863 1.575"></path><path fill="#fff" d="M7.328 10.5c.195 0 .381.08.519.22.137.141.215.331.216.53 0 .066.026.13.072.177a.24.24 0 0 0 .346 0 .25.25 0 0 0 .071-.177c.001-.199.079-.389.216-.53a.73.73 0 0 1 .519-.22h1.959c.13 0 .254-.053.346-.146a.5.5 0 0 0 .143-.354V6a.5.5 0 0 0-.143-.354.49.49 0 0 0-.346-.146h-1.47c-.324 0-.635.132-.865.366-.23.235-.359.552-.359.884v2.5c0 .066-.025.13-.071.177a.24.24 0 0 1-.346 0 .25.25 0 0 1-.072-.177v-2.5c0-.332-.13-.65-.359-.884A1.21 1.21 0 0 0 6.84 5.5h-1.47a.49.49 0 0 0-.346.146A.5.5 0 0 0 4.88 6v4c0 .133.051.26.143.354a.49.49 0 0 0 .347.146z"></path></svg></div></div></div><span class="iq ir" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b ik il du"><span><a class="is it ah ai aj ak al am an ao ap aq ar ex iu iv" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F3d2cee6b95e4&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&user=Solidity+Academy&userId=3d2cee6b95e4&source=post_page-3d2cee6b95e4--byline--eeb0e7cbeeff---------------------post_header-----------">Follow</a></span></p></div></div></span></div></div><div class="l iw"><span class="bf b bg z du"><div class="ab cn ix iy iz"><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">5 min read</span><div class="ja jb l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Oct 9, 2023</span></div></span></div></span></div></div></div><div class="ab cp jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr"><div class="h k w fg fh q"><div class="kh l"><div class="ab q ki kj"><div class="pw-multi-vote-icon fj kk kl km kn"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2Feeb0e7cbeeff&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&user=Solidity+Academy&userId=3d2cee6b95e4&source=---header_actions--eeb0e7cbeeff---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="ko ao kp kq kr ks am kt ku kv kn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kw kx ky kz la lb lc"><p class="bf b dv z du"><span class="ld">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao ko le lf ab q fk lg lh" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="li"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div><div class="ab q js jt ju jv jw jx jy jz ka kb kc kd ke kf kg"><div class="lj k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Feeb0e7cbeeff&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&source=---header_actions--eeb0e7cbeeff---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lk" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd ll cn"><div class="l ae"><div class="ab cb"><div class="lm ln lo lp lq lr ci bh"><div class="ab"><div class="bm bh" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al ls an ao ap ex lt lu lh lv lw lx ly lz s ma mb mc md me mf mg u mh mi mj"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al ls an ao ap ex lt lu lh lv lw lx ly lz s ma mb mc md me mf mg u mh mi mj"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="866d" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how functions interact with the blockchain. These specifiers play a crucial role in determining how a function can access and modify contract state. In this comprehensive guide, we’ll delve into the intricacies of function mutability in Solidity.</p><figure class="nl nm nn no np nq ni nj paragraph-image"><div role="button" tabindex="0" class="nr ns fj nt bh nu"><div class="ni nj nk"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*4ssYokPVrEFtQFED 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*4ssYokPVrEFtQFED 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*4ssYokPVrEFtQFED 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*4ssYokPVrEFtQFED 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*4ssYokPVrEFtQFED 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*4ssYokPVrEFtQFED 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*4ssYokPVrEFtQFED 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*4ssYokPVrEFtQFED 640w, https://miro.medium.com/v2/resize:fit:720/0*4ssYokPVrEFtQFED 720w, https://miro.medium.com/v2/resize:fit:750/0*4ssYokPVrEFtQFED 750w, https://miro.medium.com/v2/resize:fit:786/0*4ssYokPVrEFtQFED 786w, https://miro.medium.com/v2/resize:fit:828/0*4ssYokPVrEFtQFED 828w, https://miro.medium.com/v2/resize:fit:1100/0*4ssYokPVrEFtQFED 1100w, https://miro.medium.com/v2/resize:fit:1400/0*4ssYokPVrEFtQFED 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh lr nv c" width="700" height="394" loading="eager" role="presentation"/></picture></div></div><figcaption class="nw ff nx ni nj ny nz bf b bg z du">Photo by <a class="af oa" href="https://unsplash.com/@dvlden?utm_source=medium&utm_medium=referral" rel="noopener ugc nofollow" target="_blank">Nenad Novaković</a> on <a class="af oa" href="https://unsplash.com/?utm_source=medium&utm_medium=referral" rel="noopener ugc nofollow" target="_blank">Unsplash</a></figcaption></figure><h1 id="01cf" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">🔍 Function Mutability Specifiers</h1><p id="3cc4" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">In Solidity, functions can be specified as one of the following mutability types:</p><ol class=""><li id="866a" class="mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh pe pf pg bk"><code class="cx ph pi pj pk b">pure</code> Functions</li><li id="0b19" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">2. <code class="cx ph pi pj pk b">view</code> Functions</li><li id="e3ff" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">3. <code class="cx ph pi pj pk b">payable</code> Functions</li><li id="3ce6" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">4. Unspecified Functions</li></ol><p id="19d3" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">Let’s explore each of these in detail.</p><h1 id="026d" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">1. <code class="cx ph pi pj pk b">pure</code> Functions 🛡️</h1><p id="647a" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">A <code class="cx ph pi pj pk b">pure</code> function is the most restrictive mutability type in Solidity. When a function is marked as <code class="cx ph pi pj pk b">pure</code>, it signifies that the function can neither read nor modify the contract state. Here are some key characteristics of <code class="cx ph pi pj pk b">pure</code> functions:</p><p id="cd4e" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🚫 Cannot Read State: A <code class="cx ph pi pj pk b">pure</code> function is prohibited from reading any contract state, including state variables and information from the blockchain such as <code class="cx ph pi pj pk b">block.number</code>.</p><p id="ce00" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🚫 Cannot Modify State: Additionally, <code class="cx ph pi pj pk b">pure</code> functions are unable to modify the contract state in any way.</p><p id="0359" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Examples of <code class="cx ph pi pj pk b">pure</code> Functions:</p><pre class="nl nm nn no np pq pk pr bp ps bb bk"><span id="7b35" class="pt oc gv pk b bg pu pv l pw px">pragma solidity ^0.8.0;<br/><br/>contract PureExample {<br/> function add(uint256 a, uint256 b) public pure returns (uint256) {<br/> return a + b;<br/> }<br/>}</span></pre><p id="c049" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">In this example, the <code class="cx ph pi pj pk b">add</code> function is marked as <code class="cx ph pi pj pk b">pure</code> because it performs a simple mathematical operation without interacting with the contract state.</p><h1 id="91cd" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">2. <code class="cx ph pi pj pk b">view</code> Functions 👁️</h1><p id="5b9d" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">A <code class="cx ph pi pj pk b">view</code> function, unlike a <code class="cx ph pi pj pk b">pure</code> function, is allowed to read the contract state but is not permitted to modify it. Here are the key characteristics of <code class="cx ph pi pj pk b">view</code> functions:</p><p id="8960" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Can Read State: <code class="cx ph pi pj pk b">view</code> functions have the capability to read the contract's state variables, as well as blockchain data like <code class="cx ph pi pj pk b">block.number</code>.</p><p id="1f96" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🚫 Cannot Modify State: However, they are restricted from making any modifications to the contract state.</p><p id="5843" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Examples of <code class="cx ph pi pj pk b">view</code> Functions:</p><pre class="nl nm nn no np pq pk pr bp ps bb bk"><span id="5454" class="pt oc gv pk b bg pu pv l pw px">pragma solidity ^0.8.0;<br/><br/>contract ViewExample {<br/> uint256 public data;<br/><br/> function getData() public view returns (uint256) {<br/> return data;<br/> }<br/>}</span></pre><p id="ccd6" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">In this example, the <code class="cx ph pi pj pk b">getData</code> function is marked as <code class="cx ph pi pj pk b">view</code> because it reads the value of the <code class="cx ph pi pj pk b">data</code> state variable.</p><h1 id="69d5" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">3. <code class="cx ph pi pj pk b">payable</code> Functions 💰</h1><p id="551c" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">A <code class="cx ph pi pj pk b">payable</code> function is essential when a function needs to receive Ether as part of its execution. These functions can both read and modify contract state. Key features of <code class="cx ph pi pj pk b">payable</code> functions include:</p><p id="6c5e" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Can Read and Modify State: <code class="cx ph pi pj pk b">payable</code> functions are not only allowed to read the contract state but can also make changes to it.</p><p id="6b0b" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">💰 Can Receive Ether: These functions can receive Ether through transactions, making them suitable for functions that require funds to be sent alongside their invocation.</p><p id="bb01" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Examples of <code class="cx ph pi pj pk b">payable</code> Functions:</p><pre class="nl nm nn no np pq pk pr bp ps bb bk"><span id="7137" class="pt oc gv pk b bg pu pv l pw px">pragma solidity ^0.8.0;<br/><br/>contract PayableExample {<br/> uint256 public balance;<br/><br/> function receiveEther() public payable {<br/> balance += msg.value;<br/> }<br/>}</span></pre><p id="5abf" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">In this example, the <code class="cx ph pi pj pk b">receiveEther</code> function is marked as <code class="cx ph pi pj pk b">payable</code> to enable it to receive Ether and update the <code class="cx ph pi pj pk b">balance</code> state variable.</p><h1 id="9eb8" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">4. Unspecified Functions 🤷♂️</h1><p id="e6da" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">When a function in Solidity is not explicitly marked with any of the mutability specifiers (<code class="cx ph pi pj pk b">pure</code>, <code class="cx ph pi pj pk b">view</code>, or <code class="cx ph pi pj pk b">payable</code>), it is considered unspecified. The mutability of such functions depends on their actual implementation.</p><p id="e0fc" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Default Mutability: By default, if you don’t specify a mutability specifier, the function is considered to be <code class="cx ph pi pj pk b">non-payable</code>, meaning it can read and modify contract state but cannot accept Ether directly.</p><p id="f5b5" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔍 Examples of Unspecified Functions:</p><pre class="nl nm nn no np pq pk pr bp ps bb bk"><span id="cc9e" class="pt oc gv pk b bg pu pv l pw px">pragma solidity ^0.8.0;<br/><br/>contract UnspecifiedExample {<br/> uint256 public data;<br/><br/> function setData(uint256 _value) public {<br/> data = _value;<br/> }<br/>}</span></pre><p id="6ac2" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">In this example, the <code class="cx ph pi pj pk b">setData</code> function is unspecified, so it is <code class="cx ph pi pj pk b">non-payable</code> by default. It modifies the <code class="cx ph pi pj pk b">data</code> state variable but does not accept Ether.</p><h2 id="a023" class="py oc gv bf od pz qa dy oh qb qc ea ol mv qd qe qf mz qg qh qi nd qj qk ql qm bk">🔐 Enforcing Mutability Constraints</h2><p id="3360" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">It’s important to note that Solidity provides mechanisms to enforce mutability constraints at the runtime level. For instance, if a <code class="cx ph pi pj pk b">view</code> function attempts to modify contract state or if a <code class="cx ph pi pj pk b">pure</code> function attempts to read state variables, such actions will result in runtime exceptions.</p><h2 id="3e58" class="py oc gv bf od pz qa dy oh qb qc ea ol mv qd qe qf mz qg qh qi nd qj qk ql qm bk">🚀 Why Mutability Matters</h2><p id="1e0a" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">Understanding function mutability is crucial when designing Ethereum smart contracts. Using the appropriate mutability specifier ensures that your contract behaves as expected and is secure. Here’s why it matters:</p><ol class=""><li id="9004" class="mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh pe pf pg bk">Security: Specifying the correct mutability helps prevent unintended modifications to contract state, enhancing the security of your contract.</li><li id="c9ba" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Gas Costs: Incorrect mutability can lead to higher gas costs for transactions. For example, marking a function as <code class="cx ph pi pj pk b">pure</code> when it modifies state variables will result in unexpected gas consumption.</li><li id="c223" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Interoperability: Smart contracts often interact with other smart contracts. Specifying mutability correctly ensures that your contract can be used seamlessly by other contracts and external applications.</li></ol><h2 id="ff98" class="py oc gv bf od pz qa dy oh qb qc ea ol mv qd qe qf mz qg qh qi nd qj qk ql qm bk">💡 Choosing the Right Mutability</h2><p id="f0df" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">Selecting the appropriate mutability for your functions is a critical decision. Here are some guidelines to help you make the right choice:</p><ol class=""><li id="7598" class="mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh pe pf pg bk">Use <code class="cx ph pi pj pk b">pure</code> for Read-Only Functions: If your function only performs computations and does not access or modify the contract state, mark it as <code class="cx ph pi pj pk b">pure</code> for clarity and efficiency.</li><li id="f56d" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Use <code class="cx ph pi pj pk b">view</code> for Read-Only Access: When a function needs to retrieve data from the contract state but not modify it, use the <code class="cx ph pi pj pk b">view</code> specifier</li><li id="a40e" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Use <code class="cx ph pi pj pk b">payable</code> for Receiving Ether: Functions that need to receive Ether should be marked as <code class="cx ph pi pj pk b">payable</code> to ensure they can accept funds.</li><li id="414a" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Be Explicit: Avoid leaving functions unspecified. Always choose the appropriate mutability specifier to make your contract’s behavior clear and predictable.</li><li id="aa0b" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh pe pf pg bk">Testing and Auditing: Thoroughly test and audit your contract to ensure that the mutability specifiers are correctly applied, reducing the risk of vulnerabilities.</li></ol><h2 id="9df3" class="py oc gv bf od pz qa dy oh qb qc ea ol mv qd qe qf mz qg qh qi nd qj qk ql qm bk">🧩 Determining Mutability: The <code class="cx ph pi pj pk b">block.number</code> Dilemma</h2><p id="96f1" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">Now, let’s address the specific scenario mentioned in the initial question: a function that uses <code class="cx ph pi pj pk b">block.number</code>. It's important to recognize that determining the mutability of a function solely based on its usage of <code class="cx ph pi pj pk b">block.number</code> is not possible. Here's why:</p><p id="9133" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">⚙️ <code class="cx ph pi pj pk b">block.number</code> Is Read-Only: <code class="cx ph pi pj pk b">block.number</code> is a blockchain property that provides the current block number. It is inherently a read-only operation and does not modify the contract state.</p><p id="8d23" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">💡 Mutability Depends on the Whole Function: To determine the mutability of a function, you must consider its entire implementation. While <code class="cx ph pi pj pk b">block.number</code> itself does not affect mutability, other operations within the function might. For instance, if the function also modifies state variables or accepts Ether, its mutability will be different.</p><p id="0e74" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">🔬 Example: Let’s examine a hypothetical function that uses <code class="cx ph pi pj pk b">block.number</code>:</p><pre class="nl nm nn no np pq pk pr bp ps bb bk"><span id="2953" class="pt oc gv pk b bg pu pv l pw px">pragma solidity ^0.8.0;<br/><br/>contract BlockNumberExample {<br/> uint256 public lastBlock;<br/><br/> function updateLastBlock() public {<br/> lastBlock = block.number;<br/> }<br/>}</span></pre><p id="2cac" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">In this case, the <code class="cx ph pi pj pk b">updateLastBlock</code> function reads <code class="cx ph pi pj pk b">block.number</code> but does not modify the contract state. Therefore, it can be marked as <code class="cx ph pi pj pk b">view</code>. However, if the function had additional logic that modified state variables, it would need to be marked accordingly.</p><h1 id="cf9b" class="ob oc gv bf od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy bk">📢 Conclusion</h1><p id="7191" class="pw-post-body-paragraph mk ml gv mm b mn oz mp mq mr pa mt mu mv pb mx my mz pc nb nc nd pd nf ng nh go bk">Understanding function mutability is fundamental to designing secure and efficient smart contracts in Solidity. It ensures that your contract behaves as intended and interacts seamlessly with the Ethereum blockchain. Remember to choose the right mutability specifier based on the function’s behavior, and always consider the entire function implementation when making this decision.</p><p id="c10f" class="pw-post-body-paragraph mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk">While <code class="cx ph pi pj pk b">block.number</code> itself is a read-only operation and doesn't dictate the mutability of a function, it's essential to assess the entire function's logic to determine its mutability accurately. Solidity's mutability specifiers provide the tools to create robust and reliable smart contracts that power the decentralized world of Ethereum. 🔐🚀</p><blockquote class="qn qo qp"><p id="1004" class="mk ml qq mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh go bk"><strong class="mm gw"><em class="gv">Happy blockchain coding! 🌐🛠️🔒📚</em></strong></p></blockquote><ul class=""><li id="dfa6" class="mk ml gv mm b mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh qr pf pg bk"><a class="af oa" href="https://www.amazon.com/dp/B0BXMTGVF6" rel="noopener ugc nofollow" target="_blank"><em class="qq">Smart Contract Design Patterns</em></a></li><li id="ec1a" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh qr pf pg bk"><a class="af oa" href="https://www.amazon.com/dp/B0BZLKZ58B?binding=paperback" rel="noopener ugc nofollow" target="_blank"><strong class="mm gw"><em class="qq">Smart Contracts Made Simple</em></strong></a></li><li id="effb" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh qr pf pg bk"><a class="af oa" href="https://www.amazon.com/dp/B0BT1Y6FM3" rel="noopener ugc nofollow" target="_blank"><strong class="mm gw"><em class="qq">The Solidity Blueprint</em></strong></a></li><li id="2b26" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh qr pf pg bk"><a class="af oa" href="https://www.amazon.com/dp/B0CJLCVB3N" rel="noopener ugc nofollow" target="_blank"><strong class="mm gw">Guardians of Privacy</strong></a></li><li id="e55b" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh qr pf pg bk"><a class="af oa" href="https://a.co/d/7uDgUPN" rel="noopener ugc nofollow" target="_blank"><em class="qq">AI & Digital Transformation</em></a></li><li id="b3c7" class="mk ml gv mm b mn pl mp mq mr pm mt mu mv pn mx my mz po nb nc nd pp nf ng nh qr pf pg bk">💰<strong class="mm gw"> </strong><a class="af oa" rel="noopener ugc nofollow" target="_blank" href="/@solidity101/about"><strong class="mm gw"><em class="qq">Donate US</em></strong></a></li></ul></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh ga gb gc gd"><div class="qs qt ab iz"><div class="qu ab"><a class="qv ay am ao" rel="noopener follow" href="/tag/solidity-functions?source=post_page-----eeb0e7cbeeff--------------------------------"><div class="qw fj cx qx gf qy qz bf b bg z bk ra">Solidity Functions</div></a></div><div class="qu ab"><a class="qv ay am ao" rel="noopener follow" href="/tag/solidity-quiz?source=post_page-----eeb0e7cbeeff--------------------------------"><div class="qw fj cx qx gf qy qz bf b bg z bk ra">Solidity Quiz</div></a></div><div class="qu ab"><a class="qv ay am ao" rel="noopener follow" href="/tag/solidity-app?source=post_page-----eeb0e7cbeeff--------------------------------"><div class="qw fj cx qx gf qy qz bf b bg z bk ra">Solidity App</div></a></div><div class="qu ab"><a class="qv ay am ao" rel="noopener follow" href="/tag/solidity-developing?source=post_page-----eeb0e7cbeeff--------------------------------"><div class="qw fj cx qx gf qy qz bf b bg z bk ra">Solidity Developing</div></a></div><div class="qu ab"><a class="qv ay am ao" rel="noopener follow" href="/tag/function-mutability?source=post_page-----eeb0e7cbeeff--------------------------------"><div class="qw fj cx qx gf qy qz bf b bg z bk ra">Function Mutability</div></a></div></div></div></div><div class="l"></div><footer class="rb rc rd re rf ab q rg rh c"><div class="l ae"><div class="ab cb"><div class="ci bh ga gb gc gd"><div class="ab cp ri"><div class="ab q ki"><div class="rj l"><span class="l rk rl rm e d"><div class="ab q ki kj"><div class="pw-multi-vote-icon fj kk kl km kn"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2Feeb0e7cbeeff&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&user=Solidity+Academy&userId=3d2cee6b95e4&source=---footer_actions--eeb0e7cbeeff---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="ko ao kp kq kr ks am kt ku kv kn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kw kx ky kz la lb lc"><p class="bf b dv z du"><span class="ld">--</span></p></div></div></span><span class="l h g f rn ro"><div class="ab q ki kj"><div class="pw-multi-vote-icon fj kk kl km kn"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fp%2Feeb0e7cbeeff&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&user=Solidity+Academy&userId=3d2cee6b95e4&source=---footer_actions--eeb0e7cbeeff---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="ko ao kp kq kr ks am kt ku kv kn"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l kw kx ky kz la lb lc"><p class="bf b dv z du"><span class="ld">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao ko le lf ab q fk lg lh" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="li"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div></div><div class="ab q"><div class="rp l iw"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Feeb0e7cbeeff&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40solidity101%2Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff&source=---footer_actions--eeb0e7cbeeff---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lk" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="rp l iw"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al ls an ao ap ex lt lu lh lv"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="rq rr rs rt ru l"><div class="ab cb"><div class="ci bh ga gb gc gd"><div class="rv bh r rw"></div><div class="ab rx ry rz iy ix"><div class="sa sb sc sd se sf sg sh si sj ab cp"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@solidity101?source=post_page---post_author_info--eeb0e7cbeeff--------------------------------"><div class="l fj"><img alt="Solidity Academy" class="l fd by id ic cx" src="https://miro.medium.com/v2/resize:fill:96:96/0*VmhSfdMOmfv_PwWU" width="48" height="48" loading="lazy"/><div class="fr by l id ic fs n ay sk"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@solidity101?source=post_page---post_author_info--eeb0e7cbeeff--------------------------------"><div class="l fj"><img alt="Solidity Academy" class="l fd by sl sm cx" src="https://miro.medium.com/v2/resize:fill:128:128/0*VmhSfdMOmfv_PwWU" width="64" height="64" loading="lazy"/><div class="fr by l sl sm fs n ay sk"></div></div></a></div><div class="j i d sn iw"><div class="ab"><span><button class="bf b bg z so qw sp sq sr ss st ev ew su sv sw fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co sx"><div class="sy sz ta tb tc l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" rel="noopener follow" href="/@solidity101?source=post_page---post_author_info--eeb0e7cbeeff--------------------------------"><h2 class="pw-author-name bf te tf tg th ti tj tk mv qe qf mz qh qi nd qk ql bk"><span class="go td">Written by <!-- -->Solidity Academy</span></h2><div class="tl ab"><div><div class="ab" aria-hidden="false"><div class="ab ip"><div class="ab"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 16 16"><path fill="#437AFF" d="M15.163 8c0 .65-.459 1.144-.863 1.575-.232.244-.471.5-.563.719s-.086.543-.092.875c-.006.606-.018 1.3-.49 1.781-.47.481-1.15.494-1.744.5-.324.006-.655.013-.857.094s-.465.337-.704.575c-.422.412-.906.881-1.542.881-.637 0-1.12-.469-1.543-.881-.239-.238-.49-.482-.704-.575-.214-.094-.532-.088-.857-.094-.593-.006-1.273-.019-1.744-.5s-.484-1.175-.49-1.781c-.006-.332-.012-.669-.092-.875-.08-.207-.33-.475-.563-.719-.404-.431-.863-.925-.863-1.575s.46-1.144.863-1.575c.233-.244.472-.5.563-.719.092-.219.086-.544.092-.875.006-.606.019-1.3.49-1.781s1.15-.494 1.744-.5c.325-.006.655-.012.857-.094.202-.081.465-.337.704-.575C7.188 1.47 7.671 1 8.308 1s1.12.469 1.542.881c.239.238.49.481.704.575s.533.088.857.094c.594.006 1.273.019 1.745.5.47.481.483 1.175.49 1.781.005.331.011.669.091.875s.33.475.563.719c.404.431.863.925.863 1.575"></path><path fill="#fff" d="M7.328 10.5c.195 0 .381.08.519.22.137.141.215.331.216.53 0 .066.026.13.072.177a.24.24 0 0 0 .346 0 .25.25 0 0 0 .071-.177c.001-.199.079-.389.216-.53a.73.73 0 0 1 .519-.22h1.959c.13 0 .254-.053.346-.146a.5.5 0 0 0 .143-.354V6a.5.5 0 0 0-.143-.354.49.49 0 0 0-.346-.146h-1.47c-.324 0-.635.132-.865.366-.23.235-.359.552-.359.884v2.5c0 .066-.025.13-.071.177a.24.24 0 0 1-.346 0 .25.25 0 0 1-.072-.177v-2.5c0-.332-.13-.65-.359-.884A1.21 1.21 0 0 0 6.84 5.5h-1.47a.49.49 0 0 0-.346.146A.5.5 0 0 0 4.88 6v4c0 .133.051.26.143.354a.49.49 0 0 0 .347.146z"></path></svg></div></div></div></div></div></a><div class="qu ab ib"><div class="l iw"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar im" rel="noopener follow" href="/@solidity101/followers?source=post_page---post_author_info--eeb0e7cbeeff--------------------------------">3.2K Followers</a></span></div><div class="bf b bg z du ab tm"><span class="iq l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar im" rel="noopener follow" href="/@solidity101/following?source=post_page---post_author_info--eeb0e7cbeeff--------------------------------">66 Following</a></div></div><div class="tn l"><p class="bf b bg z bk">Learn smart contract development and blockchain integration in depth. <a class="af ag ah ai aj ak al am an ao ap aq ar oa gp" href="https://heylink.me/solidity/" rel="noopener ugc nofollow">https://heylink.me/solidity/</a> * For Collaborations <a class="af ag ah ai aj ak al am an ao ap aq ar oa gp" href="mailto:solidity101@gmail.com" rel="noopener ugc nofollow">solidity101@gmail.com</a></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z so qw sp sq sr ss st ev ew su sv sw fa fb fc fd bm fe ff">Follow</button></span></div></div></div></div></div></div><div class="to l"><div class="rv bh r tp tq tr ts tt"></div><div class="ab cb"><div class="ci bh ga gb gc gd"><div class="ab q cp"><h2 class="bf te oe og oh oi ok ol om oo op oq os ot ou ow ox bk">No responses yet</h2><div class="ab tu"><div><div class="bm" aria-hidden="false"><a class="tv tw" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--eeb0e7cbeeff--------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div></div></div></div><div class="tx ty tz ua ub l bx"><div class="h k j"><div class="rv bh uc ud"></div><div class="ab cb"><div class="ci bh ga gb gc gd"><div class="ue ab ki iz"><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/about?autoplay=1&source=post_page-----eeb0e7cbeeff--------------------------------"><p class="bf b dv z du">About</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----eeb0e7cbeeff--------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="uf ug l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----eeb0e7cbeeff--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="uf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/business?source=post_page-----eeb0e7cbeeff--------------------------------"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241122-185319-7bcdc08639"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-eeb0e7cbeeff","user-3d2cee6b95e4"],"serverVariantState":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":true,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"95cdffd5-166e-45b4-8a11-a622cf40511c","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-09f98e9ccc29fa86f1486fd8a8e43311-bde4f2bd9e38a245-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002F@solidity101\u002Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20241122-185319-7bcdc08639","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241122-185319-7bcdc08639","commit":"7bcdc08639c179dc5172558201a3fd3abc1b5db6"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"medium.com\"})":null,"postResult({\"id\":\"eeb0e7cbeeff\"})":{"__ref":"Post:eeb0e7cbeeff"}},"MastodonAccount:solidity101@me.dm":{"__typename":"MastodonAccount","domain":"me.dm","username":"solidity101","id":"solidity101@me.dm"},"LinkedAccounts:3d2cee6b95e4":{"__typename":"LinkedAccounts","mastodon":{"__ref":"MastodonAccount:solidity101@me.dm"},"id":"3d2cee6b95e4"},"UserViewerEdge:userId:3d2cee6b95e4-viewerId:lo_8c2fa97d78b7":{"__typename":"UserViewerEdge","id":"userId:3d2cee6b95e4-viewerId:lo_8c2fa97d78b7","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:b7eb778c046d":{"__typename":"NewsletterV3","id":"b7eb778c046d","type":"NEWSLETTER_TYPE_AUTHOR","slug":"3d2cee6b95e4","name":"3d2cee6b95e4","collection":null,"user":{"__ref":"User:3d2cee6b95e4"}},"User:3d2cee6b95e4":{"__typename":"User","id":"3d2cee6b95e4","name":"Solidity Academy","username":"solidity101","newsletterV3":{"__ref":"NewsletterV3:b7eb778c046d"},"linkedAccounts":{"__ref":"LinkedAccounts:3d2cee6b95e4"},"isSuspended":false,"imageId":"0*VmhSfdMOmfv_PwWU","mediumMemberAt":0,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":true},"socialStats":{"__typename":"SocialStats","followerCount":3205,"followingCount":43,"collectionFollowingCount":23},"customDomainState":null,"hasSubdomain":false,"bio":"Learn smart contract development and blockchain integration in depth. https:\u002F\u002Fheylink.me\u002Fsolidity\u002F * For Collaborations solidity101@gmail.com","isPartnerProgramEnrolled":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:3d2cee6b95e4-viewerId:lo_8c2fa97d78b7"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":null,"allowNotes":true,"twitterScreenName":"solidity101"},"Paragraph:9a3f3ea0daec_0":{"__typename":"Paragraph","id":"9a3f3ea0daec_0","name":"126b","type":"H3","href":null,"layout":null,"metadata":null,"text":"Understanding the Mutability of Solidity Functions: A Deep Dive","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_1":{"__typename":"Paragraph","id":"9a3f3ea0daec_1","name":"866d","type":"P","href":null,"layout":null,"metadata":null,"text":"📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how functions interact with the blockchain. These specifiers play a crucial role in determining how a function can access and modify contract state. In this comprehensive guide, we’ll delve into the intricacies of function mutability in Solidity.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*4ssYokPVrEFtQFED":{"__typename":"ImageMetadata","id":"0*4ssYokPVrEFtQFED","originalHeight":4320,"originalWidth":7680,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:9a3f3ea0daec_2":{"__typename":"Paragraph","id":"9a3f3ea0daec_2","name":"cc1c","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*4ssYokPVrEFtQFED"},"text":"Photo by Nenad Novaković on Unsplash","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":9,"end":24,"href":"https:\u002F\u002Funsplash.com\u002F@dvlden?utm_source=medium&utm_medium=referral","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":28,"end":36,"href":"https:\u002F\u002Funsplash.com?utm_source=medium&utm_medium=referral","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_3":{"__typename":"Paragraph","id":"9a3f3ea0daec_3","name":"01cf","type":"H3","href":null,"layout":null,"metadata":null,"text":"🔍 Function Mutability Specifiers","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_4":{"__typename":"Paragraph","id":"9a3f3ea0daec_4","name":"3cc4","type":"P","href":null,"layout":null,"metadata":null,"text":"In Solidity, functions can be specified as one of the following mutability types:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_5":{"__typename":"Paragraph","id":"9a3f3ea0daec_5","name":"866a","type":"OLI","href":null,"layout":null,"metadata":null,"text":"pure Functions","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":0,"end":4,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_6":{"__typename":"Paragraph","id":"9a3f3ea0daec_6","name":"0b19","type":"OLI","href":null,"layout":null,"metadata":null,"text":"2. view Functions","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":7,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_7":{"__typename":"Paragraph","id":"9a3f3ea0daec_7","name":"e3ff","type":"OLI","href":null,"layout":null,"metadata":null,"text":"3. payable Functions","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":10,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_8":{"__typename":"Paragraph","id":"9a3f3ea0daec_8","name":"3ce6","type":"OLI","href":null,"layout":null,"metadata":null,"text":"4. Unspecified Functions","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_9":{"__typename":"Paragraph","id":"9a3f3ea0daec_9","name":"19d3","type":"P","href":null,"layout":null,"metadata":null,"text":"Let’s explore each of these in detail.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_10":{"__typename":"Paragraph","id":"9a3f3ea0daec_10","name":"026d","type":"H3","href":null,"layout":null,"metadata":null,"text":"1. pure Functions 🛡️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":7,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_11":{"__typename":"Paragraph","id":"9a3f3ea0daec_11","name":"647a","type":"P","href":null,"layout":null,"metadata":null,"text":"A pure function is the most restrictive mutability type in Solidity. When a function is marked as pure, it signifies that the function can neither read nor modify the contract state. Here are some key characteristics of pure functions:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":2,"end":6,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":98,"end":102,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":220,"end":224,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_12":{"__typename":"Paragraph","id":"9a3f3ea0daec_12","name":"cd4e","type":"P","href":null,"layout":null,"metadata":null,"text":"🚫 Cannot Read State: A pure function is prohibited from reading any contract state, including state variables and information from the blockchain such as block.number.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":24,"end":28,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":155,"end":167,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_13":{"__typename":"Paragraph","id":"9a3f3ea0daec_13","name":"ce00","type":"P","href":null,"layout":null,"metadata":null,"text":"🚫 Cannot Modify State: Additionally, pure functions are unable to modify the contract state in any way.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":38,"end":42,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_14":{"__typename":"Paragraph","id":"9a3f3ea0daec_14","name":"0359","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Examples of pure Functions:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":15,"end":19,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_15":{"__typename":"Paragraph","id":"9a3f3ea0daec_15","name":"7b35","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pragma solidity ^0.8.0;\n\ncontract PureExample {\n function add(uint256 a, uint256 b) public pure returns (uint256) {\n return a + b;\n }\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"css"},"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_16":{"__typename":"Paragraph","id":"9a3f3ea0daec_16","name":"c049","type":"P","href":null,"layout":null,"metadata":null,"text":"In this example, the add function is marked as pure because it performs a simple mathematical operation without interacting with the contract state.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":21,"end":24,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":47,"end":51,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_17":{"__typename":"Paragraph","id":"9a3f3ea0daec_17","name":"91cd","type":"H3","href":null,"layout":null,"metadata":null,"text":"2. view Functions 👁️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":7,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_18":{"__typename":"Paragraph","id":"9a3f3ea0daec_18","name":"5b9d","type":"P","href":null,"layout":null,"metadata":null,"text":"A view function, unlike a pure function, is allowed to read the contract state but is not permitted to modify it. Here are the key characteristics of view functions:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":2,"end":6,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":26,"end":30,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":150,"end":154,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_19":{"__typename":"Paragraph","id":"9a3f3ea0daec_19","name":"8960","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Can Read State: view functions have the capability to read the contract's state variables, as well as blockchain data like block.number.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":19,"end":23,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":126,"end":138,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_20":{"__typename":"Paragraph","id":"9a3f3ea0daec_20","name":"1f96","type":"P","href":null,"layout":null,"metadata":null,"text":"🚫 Cannot Modify State: However, they are restricted from making any modifications to the contract state.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_21":{"__typename":"Paragraph","id":"9a3f3ea0daec_21","name":"5843","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Examples of view Functions:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":15,"end":19,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_22":{"__typename":"Paragraph","id":"9a3f3ea0daec_22","name":"5454","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pragma solidity ^0.8.0;\n\ncontract ViewExample {\n uint256 public data;\n\n function getData() public view returns (uint256) {\n return data;\n }\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"kotlin"},"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_23":{"__typename":"Paragraph","id":"9a3f3ea0daec_23","name":"ccd6","type":"P","href":null,"layout":null,"metadata":null,"text":"In this example, the getData function is marked as view because it reads the value of the data state variable.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":21,"end":28,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":51,"end":55,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":90,"end":94,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_24":{"__typename":"Paragraph","id":"9a3f3ea0daec_24","name":"69d5","type":"H3","href":null,"layout":null,"metadata":null,"text":"3. payable Functions 💰","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":10,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_25":{"__typename":"Paragraph","id":"9a3f3ea0daec_25","name":"551c","type":"P","href":null,"layout":null,"metadata":null,"text":"A payable function is essential when a function needs to receive Ether as part of its execution. These functions can both read and modify contract state. Key features of payable functions include:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":2,"end":9,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":170,"end":177,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_26":{"__typename":"Paragraph","id":"9a3f3ea0daec_26","name":"6c5e","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Can Read and Modify State: payable functions are not only allowed to read the contract state but can also make changes to it.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":30,"end":37,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_27":{"__typename":"Paragraph","id":"9a3f3ea0daec_27","name":"6b0b","type":"P","href":null,"layout":null,"metadata":null,"text":"💰 Can Receive Ether: These functions can receive Ether through transactions, making them suitable for functions that require funds to be sent alongside their invocation.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_28":{"__typename":"Paragraph","id":"9a3f3ea0daec_28","name":"bb01","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Examples of payable Functions:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":15,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_29":{"__typename":"Paragraph","id":"9a3f3ea0daec_29","name":"7137","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pragma solidity ^0.8.0;\n\ncontract PayableExample {\n uint256 public balance;\n\n function receiveEther() public payable {\n balance += msg.value;\n }\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"csharp"},"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_30":{"__typename":"Paragraph","id":"9a3f3ea0daec_30","name":"5abf","type":"P","href":null,"layout":null,"metadata":null,"text":"In this example, the receiveEther function is marked as payable to enable it to receive Ether and update the balance state variable.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":21,"end":33,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":56,"end":63,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":109,"end":116,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_31":{"__typename":"Paragraph","id":"9a3f3ea0daec_31","name":"9eb8","type":"H3","href":null,"layout":null,"metadata":null,"text":"4. Unspecified Functions 🤷♂️","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_32":{"__typename":"Paragraph","id":"9a3f3ea0daec_32","name":"e6da","type":"P","href":null,"layout":null,"metadata":null,"text":"When a function in Solidity is not explicitly marked with any of the mutability specifiers (pure, view, or payable), it is considered unspecified. The mutability of such functions depends on their actual implementation.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":92,"end":96,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":98,"end":102,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":107,"end":114,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_33":{"__typename":"Paragraph","id":"9a3f3ea0daec_33","name":"e0fc","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Default Mutability: By default, if you don’t specify a mutability specifier, the function is considered to be non-payable, meaning it can read and modify contract state but cannot accept Ether directly.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":113,"end":124,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_34":{"__typename":"Paragraph","id":"9a3f3ea0daec_34","name":"f5b5","type":"P","href":null,"layout":null,"metadata":null,"text":"🔍 Examples of Unspecified Functions:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_35":{"__typename":"Paragraph","id":"9a3f3ea0daec_35","name":"cc9e","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pragma solidity ^0.8.0;\n\ncontract UnspecifiedExample {\n uint256 public data;\n\n function setData(uint256 _value) public {\n data = _value;\n }\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"kotlin"},"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_36":{"__typename":"Paragraph","id":"9a3f3ea0daec_36","name":"6ac2","type":"P","href":null,"layout":null,"metadata":null,"text":"In this example, the setData function is unspecified, so it is non-payable by default. It modifies the data state variable but does not accept Ether.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":21,"end":28,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":63,"end":74,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":103,"end":107,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_37":{"__typename":"Paragraph","id":"9a3f3ea0daec_37","name":"a023","type":"H4","href":null,"layout":null,"metadata":null,"text":"🔐 Enforcing Mutability Constraints","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_38":{"__typename":"Paragraph","id":"9a3f3ea0daec_38","name":"3360","type":"P","href":null,"layout":null,"metadata":null,"text":"It’s important to note that Solidity provides mechanisms to enforce mutability constraints at the runtime level. For instance, if a view function attempts to modify contract state or if a pure function attempts to read state variables, such actions will result in runtime exceptions.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":132,"end":136,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":188,"end":192,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_39":{"__typename":"Paragraph","id":"9a3f3ea0daec_39","name":"3e58","type":"H4","href":null,"layout":null,"metadata":null,"text":"🚀 Why Mutability Matters","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_40":{"__typename":"Paragraph","id":"9a3f3ea0daec_40","name":"1e0a","type":"P","href":null,"layout":null,"metadata":null,"text":"Understanding function mutability is crucial when designing Ethereum smart contracts. Using the appropriate mutability specifier ensures that your contract behaves as expected and is secure. Here’s why it matters:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_41":{"__typename":"Paragraph","id":"9a3f3ea0daec_41","name":"9004","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Security: Specifying the correct mutability helps prevent unintended modifications to contract state, enhancing the security of your contract.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_42":{"__typename":"Paragraph","id":"9a3f3ea0daec_42","name":"c9ba","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Gas Costs: Incorrect mutability can lead to higher gas costs for transactions. For example, marking a function as pure when it modifies state variables will result in unexpected gas consumption.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":114,"end":118,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_43":{"__typename":"Paragraph","id":"9a3f3ea0daec_43","name":"c223","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Interoperability: Smart contracts often interact with other smart contracts. Specifying mutability correctly ensures that your contract can be used seamlessly by other contracts and external applications.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_44":{"__typename":"Paragraph","id":"9a3f3ea0daec_44","name":"ff98","type":"H4","href":null,"layout":null,"metadata":null,"text":"💡 Choosing the Right Mutability","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_45":{"__typename":"Paragraph","id":"9a3f3ea0daec_45","name":"f0df","type":"P","href":null,"layout":null,"metadata":null,"text":"Selecting the appropriate mutability for your functions is a critical decision. Here are some guidelines to help you make the right choice:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_46":{"__typename":"Paragraph","id":"9a3f3ea0daec_46","name":"7598","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Use pure for Read-Only Functions: If your function only performs computations and does not access or modify the contract state, mark it as pure for clarity and efficiency.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":4,"end":8,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":139,"end":143,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_47":{"__typename":"Paragraph","id":"9a3f3ea0daec_47","name":"f56d","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Use view for Read-Only Access: When a function needs to retrieve data from the contract state but not modify it, use the view specifier","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":4,"end":8,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":121,"end":125,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_48":{"__typename":"Paragraph","id":"9a3f3ea0daec_48","name":"a40e","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Use payable for Receiving Ether: Functions that need to receive Ether should be marked as payable to ensure they can accept funds.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":4,"end":11,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":90,"end":97,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_49":{"__typename":"Paragraph","id":"9a3f3ea0daec_49","name":"414a","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Be Explicit: Avoid leaving functions unspecified. Always choose the appropriate mutability specifier to make your contract’s behavior clear and predictable.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_50":{"__typename":"Paragraph","id":"9a3f3ea0daec_50","name":"aa0b","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Testing and Auditing: Thoroughly test and audit your contract to ensure that the mutability specifiers are correctly applied, reducing the risk of vulnerabilities.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_51":{"__typename":"Paragraph","id":"9a3f3ea0daec_51","name":"9df3","type":"H4","href":null,"layout":null,"metadata":null,"text":"🧩 Determining Mutability: The block.number Dilemma","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":31,"end":43,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_52":{"__typename":"Paragraph","id":"9a3f3ea0daec_52","name":"96f1","type":"P","href":null,"layout":null,"metadata":null,"text":"Now, let’s address the specific scenario mentioned in the initial question: a function that uses block.number. It's important to recognize that determining the mutability of a function solely based on its usage of block.number is not possible. Here's why:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":97,"end":109,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":214,"end":226,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_53":{"__typename":"Paragraph","id":"9a3f3ea0daec_53","name":"9133","type":"P","href":null,"layout":null,"metadata":null,"text":"⚙️ block.number Is Read-Only: block.number is a blockchain property that provides the current block number. It is inherently a read-only operation and does not modify the contract state.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":3,"end":15,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":30,"end":42,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_54":{"__typename":"Paragraph","id":"9a3f3ea0daec_54","name":"8d23","type":"P","href":null,"layout":null,"metadata":null,"text":"💡 Mutability Depends on the Whole Function: To determine the mutability of a function, you must consider its entire implementation. While block.number itself does not affect mutability, other operations within the function might. For instance, if the function also modifies state variables or accepts Ether, its mutability will be different.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":139,"end":151,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_55":{"__typename":"Paragraph","id":"9a3f3ea0daec_55","name":"0e74","type":"P","href":null,"layout":null,"metadata":null,"text":"🔬 Example: Let’s examine a hypothetical function that uses block.number:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":60,"end":72,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_56":{"__typename":"Paragraph","id":"9a3f3ea0daec_56","name":"2953","type":"PRE","href":null,"layout":null,"metadata":null,"text":"pragma solidity ^0.8.0;\n\ncontract BlockNumberExample {\n uint256 public lastBlock;\n\n function updateLastBlock() public {\n lastBlock = block.number;\n }\n}","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"csharp"},"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_57":{"__typename":"Paragraph","id":"9a3f3ea0daec_57","name":"2cac","type":"P","href":null,"layout":null,"metadata":null,"text":"In this case, the updateLastBlock function reads block.number but does not modify the contract state. Therefore, it can be marked as view. However, if the function had additional logic that modified state variables, it would need to be marked accordingly.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":18,"end":33,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":49,"end":61,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":133,"end":137,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_58":{"__typename":"Paragraph","id":"9a3f3ea0daec_58","name":"cf9b","type":"H3","href":null,"layout":null,"metadata":null,"text":"📢 Conclusion","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_59":{"__typename":"Paragraph","id":"9a3f3ea0daec_59","name":"7191","type":"P","href":null,"layout":null,"metadata":null,"text":"Understanding function mutability is fundamental to designing secure and efficient smart contracts in Solidity. It ensures that your contract behaves as intended and interacts seamlessly with the Ethereum blockchain. Remember to choose the right mutability specifier based on the function’s behavior, and always consider the entire function implementation when making this decision.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_60":{"__typename":"Paragraph","id":"9a3f3ea0daec_60","name":"c10f","type":"P","href":null,"layout":null,"metadata":null,"text":"While block.number itself is a read-only operation and doesn't dictate the mutability of a function, it's essential to assess the entire function's logic to determine its mutability accurately. Solidity's mutability specifiers provide the tools to create robust and reliable smart contracts that power the decentralized world of Ethereum. 🔐🚀","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":6,"end":18,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_61":{"__typename":"Paragraph","id":"9a3f3ea0daec_61","name":"1004","type":"BQ","href":null,"layout":null,"metadata":null,"text":"Happy blockchain coding! 🌐🛠️🔒📚","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":34,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":34,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_62":{"__typename":"Paragraph","id":"9a3f3ea0daec_62","name":"dfa6","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Smart Contract Design Patterns","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":30,"href":"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0BXMTGVF6","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":30,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_63":{"__typename":"Paragraph","id":"9a3f3ea0daec_63","name":"ec1a","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Smart Contracts Made Simple","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":27,"href":"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0BZLKZ58B?binding=paperback","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_64":{"__typename":"Paragraph","id":"9a3f3ea0daec_64","name":"effb","type":"ULI","href":null,"layout":null,"metadata":null,"text":"The Solidity Blueprint","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":22,"href":"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0BT1Y6FM3","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_65":{"__typename":"Paragraph","id":"9a3f3ea0daec_65","name":"2b26","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Guardians of Privacy","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":20,"href":"https:\u002F\u002Fwww.amazon.com\u002Fdp\u002FB0CJLCVB3N","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":20,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_66":{"__typename":"Paragraph","id":"9a3f3ea0daec_66","name":"e55b","type":"ULI","href":null,"layout":null,"metadata":null,"text":"AI & Digital Transformation","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":27,"href":"https:\u002F\u002Fa.co\u002Fd\u002F7uDgUPN","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:9a3f3ea0daec_67":{"__typename":"Paragraph","id":"9a3f3ea0daec_67","name":"b3c7","type":"ULI","href":null,"layout":null,"metadata":null,"text":"💰 Donate US","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":12,"href":"\u002F@solidity101\u002Fabout","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":2,"end":12,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":3,"end":12,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"PostViewerEdge:postId:eeb0e7cbeeff-viewerId:lo_8c2fa97d78b7":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:eeb0e7cbeeff-viewerId:lo_8c2fa97d78b7"},"Tag:solidity-functions":{"__typename":"Tag","id":"solidity-functions","displayTitle":"Solidity Functions","normalizedTagSlug":"solidity-functions"},"Tag:solidity-quiz":{"__typename":"Tag","id":"solidity-quiz","displayTitle":"Solidity Quiz","normalizedTagSlug":"solidity-quiz"},"Tag:solidity-app":{"__typename":"Tag","id":"solidity-app","displayTitle":"Solidity App","normalizedTagSlug":"solidity-app"},"Tag:solidity-developing":{"__typename":"Tag","id":"solidity-developing","displayTitle":"Solidity Developing","normalizedTagSlug":"solidity-developing"},"Tag:function-mutability":{"__typename":"Tag","id":"function-mutability","displayTitle":"Function Mutability","normalizedTagSlug":"function-mutability"},"Post:eeb0e7cbeeff":{"__typename":"Post","id":"eeb0e7cbeeff","collection":null,"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"fcee","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:9a3f3ea0daec_0"},{"__ref":"Paragraph:9a3f3ea0daec_1"},{"__ref":"Paragraph:9a3f3ea0daec_2"},{"__ref":"Paragraph:9a3f3ea0daec_3"},{"__ref":"Paragraph:9a3f3ea0daec_4"},{"__ref":"Paragraph:9a3f3ea0daec_5"},{"__ref":"Paragraph:9a3f3ea0daec_6"},{"__ref":"Paragraph:9a3f3ea0daec_7"},{"__ref":"Paragraph:9a3f3ea0daec_8"},{"__ref":"Paragraph:9a3f3ea0daec_9"},{"__ref":"Paragraph:9a3f3ea0daec_10"},{"__ref":"Paragraph:9a3f3ea0daec_11"},{"__ref":"Paragraph:9a3f3ea0daec_12"},{"__ref":"Paragraph:9a3f3ea0daec_13"},{"__ref":"Paragraph:9a3f3ea0daec_14"},{"__ref":"Paragraph:9a3f3ea0daec_15"},{"__ref":"Paragraph:9a3f3ea0daec_16"},{"__ref":"Paragraph:9a3f3ea0daec_17"},{"__ref":"Paragraph:9a3f3ea0daec_18"},{"__ref":"Paragraph:9a3f3ea0daec_19"},{"__ref":"Paragraph:9a3f3ea0daec_20"},{"__ref":"Paragraph:9a3f3ea0daec_21"},{"__ref":"Paragraph:9a3f3ea0daec_22"},{"__ref":"Paragraph:9a3f3ea0daec_23"},{"__ref":"Paragraph:9a3f3ea0daec_24"},{"__ref":"Paragraph:9a3f3ea0daec_25"},{"__ref":"Paragraph:9a3f3ea0daec_26"},{"__ref":"Paragraph:9a3f3ea0daec_27"},{"__ref":"Paragraph:9a3f3ea0daec_28"},{"__ref":"Paragraph:9a3f3ea0daec_29"},{"__ref":"Paragraph:9a3f3ea0daec_30"},{"__ref":"Paragraph:9a3f3ea0daec_31"},{"__ref":"Paragraph:9a3f3ea0daec_32"},{"__ref":"Paragraph:9a3f3ea0daec_33"},{"__ref":"Paragraph:9a3f3ea0daec_34"},{"__ref":"Paragraph:9a3f3ea0daec_35"},{"__ref":"Paragraph:9a3f3ea0daec_36"},{"__ref":"Paragraph:9a3f3ea0daec_37"},{"__ref":"Paragraph:9a3f3ea0daec_38"},{"__ref":"Paragraph:9a3f3ea0daec_39"},{"__ref":"Paragraph:9a3f3ea0daec_40"},{"__ref":"Paragraph:9a3f3ea0daec_41"},{"__ref":"Paragraph:9a3f3ea0daec_42"},{"__ref":"Paragraph:9a3f3ea0daec_43"},{"__ref":"Paragraph:9a3f3ea0daec_44"},{"__ref":"Paragraph:9a3f3ea0daec_45"},{"__ref":"Paragraph:9a3f3ea0daec_46"},{"__ref":"Paragraph:9a3f3ea0daec_47"},{"__ref":"Paragraph:9a3f3ea0daec_48"},{"__ref":"Paragraph:9a3f3ea0daec_49"},{"__ref":"Paragraph:9a3f3ea0daec_50"},{"__ref":"Paragraph:9a3f3ea0daec_51"},{"__ref":"Paragraph:9a3f3ea0daec_52"},{"__ref":"Paragraph:9a3f3ea0daec_53"},{"__ref":"Paragraph:9a3f3ea0daec_54"},{"__ref":"Paragraph:9a3f3ea0daec_55"},{"__ref":"Paragraph:9a3f3ea0daec_56"},{"__ref":"Paragraph:9a3f3ea0daec_57"},{"__ref":"Paragraph:9a3f3ea0daec_58"},{"__ref":"Paragraph:9a3f3ea0daec_59"},{"__ref":"Paragraph:9a3f3ea0daec_60"},{"__ref":"Paragraph:9a3f3ea0daec_61"},{"__ref":"Paragraph:9a3f3ea0daec_62"},{"__ref":"Paragraph:9a3f3ea0daec_63"},{"__ref":"Paragraph:9a3f3ea0daec_64"},{"__ref":"Paragraph:9a3f3ea0daec_65"},{"__ref":"Paragraph:9a3f3ea0daec_66"},{"__ref":"Paragraph:9a3f3ea0daec_67"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:3d2cee6b95e4"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002F@solidity101\u002Funderstanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"blockchain"}],"isPublished":true,"latestPublishedVersion":"9a3f3ea0daec","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":0},"clapCount":3,"allowResponses":true,"isLimitedState":false,"title":"Understanding the Mutability of Solidity Functions: A Deep Dive","isSeries":false,"sequence":null,"uniqueSlug":"understanding-the-mutability-of-solidity-functions-a-deep-dive-eeb0e7cbeeff","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1696839123998,"readingTime":4.818867924528302,"previewContent":{"__typename":"PreviewContent","subtitle":"📜 Solidity, the programming language for Ethereum smart contracts, provides a variety of function mutability specifiers to define how…"},"previewImage":{"__ref":"ImageMetadata:0*4ssYokPVrEFtQFED"},"isShortform":false,"seoTitle":"","firstPublishedAt":1696839123998,"updatedAt":1696915640227,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:eeb0e7cbeeff-viewerId:lo_8c2fa97d78b7"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:solidity-functions"},{"__ref":"Tag:solidity-quiz"},{"__ref":"Tag:solidity-app"},{"__ref":"Tag:solidity-developing"},{"__ref":"Tag:function-mutability"}],"isNewsletter":false,"statusForCollection":null,"pendingCollection":null,"detectedLanguage":"en","wordCount":1224,"layerCake":0,"responsesLocked":false}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"MISS"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.b2314f6d.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.24534aeb.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.b071a958.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7079.67349d50.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.a2d9f6a1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.3d049572.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c8a11795.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.6565ad5f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.a0afad8a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.36c2ecf4.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e7717a44daece63',t:'MTczMjQyNzEyMi4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>