백엔드 개발자를 위한 NEAR: 당신의 기술, 탈중앙화

3 min read

다음 텍스트를 번역합니다. NEAR 프로토콜과 관련된 모든 용어입니다. HTML 태그를 보존하되 응답에서 , <html>, <body>, <head>와 같은 태그를 생성하지 마십시오. ‘Burrow’, ‘NEAR’, ‘BRR’, ‘stNEAR’ 등의 특정 이름이나 토큰을 번역하지 마십시오:</p> <article class="text-token-text-primary w-full focus:outline-none scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]" dir="auto" tabindex="-1" data-turn-id="c237be5f-fed8-454a-ac8a-3d55956ea4ee" data-testid="conversation-turn-2" data-scroll-anchor="true" data-turn="assistant"> <div class="text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)"> <div class="[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn" tabindex="-1"> <div class="flex max-w-full flex-col grow"> <div class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&]:mt-5" dir="auto" data-message-author-role="assistant" data-message-id="0a6e625c-1cb1-4e93-b6e6-dde31d7a1ba3" data-message-model-slug="gpt-5-thinking"> <div class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]"> <div class="markdown prose dark:prose-invert w-full break-words light markdown-new-styling"> <p data-start="59" data-end="771"><strong data-start="59" data-end="88">소개</strong><br data-start="88" data-end="91">백엔드를 구축하는 경우, 이미 API를 설계하고 상태를 저장하며 사용자를 관리하는 방법을 알고 있습니다. <a class="wpil_keyword_link" title="NEAR 프로토콜이란?" href="https://learnnear.club/what-is-near-protocol/" data-wpil-keyword-link="linked" data-wpil-monitor-id="277">NEAR 프로토콜</a>을 사용하면 동일한 직관을 사용할 수 있습니다. 다만, 여러분의 서버 대신 분산 네트워크에서 작동합니다. NEAR은 “호스팅할 필요가 없는 백엔드”로 생각할 수 있습니다. 비즈니스 로직은 스마트 계약(미니 프로그램)으로 실행되며, 데이터는 네트워크에서 관리되는 복제 저장소에 저장되며, 사용자 ID는 암호화로 확인됩니다. 이 강의에서는 익숙한 백엔드 아이디어를 NEAR 개념에 매핑하고 간단한 Twitter 스타일 예제를 통해 읽기 및 쓰기 작업이 어떻게 작동하는지 살펴보겠습니다. 마지막에는 웹2에서 NEAR로 이동하는 것이 적응이며, 새로운 창조가 아님을 알게 될 것입니다.</p> <hr data-start="773" data-end="776"> <h2 data-start="778" data-end="812"><span class="ez-toc-section" id="NEAR%EC%9D%84_%EB%B6%84%EC%82%B0%ED%98%95_%EB%B0%B1%EC%97%94%EB%93%9C%EB%A1%9C"></span>NEAR을 분산형 백엔드로<span class="ez-toc-section-end"></span></h2> <p data-start="814" data-end="1201">유지하지 않는 글로벌 클러스터에서 실행되는 서비스를 배포한다고 상상해보세요. 이것이 NEAR입니다. 여러분의 애플리케이션은 자체 코드와 데이터를 가진 계정(예: <code data-start="947" data-end="974">twitter-app.yourname.near</code>)입니다. 독립적인 <strong data-start="1016" data-end="1030">검증자</strong>(네트워크 노드)가 해당 데이터를 복제하고 제공합니다. 사용자가 상호 작용할 때 네트워크는 일반적으로 ~1~2초 안에 결과에 대한 논란이 없는 합의에 도달합니다.</p> <p data-start="1203" data-end="1219"><em data-start="1203" data-end="1217">전문 용어 확인</em></p> <ul data-start="1220" data-end="1395"> <li data-start="1220" data-end="1321"> <p data-start="1222" data-end="1321"><strong data-start="1222" data-end="1236">검증자:</strong> NEAR 소프트웨어를 실행하고 계약을 실행하며 합의에 참여하는 노드입니다.</p> </li> <li data-start="1322" data-end="1395"> <p data-start="1324" data-end="1395"><strong data-start="1324" data-end="1337">최종성:</strong> 변경 사항이 잠겨지고 되돌릴 수 없는 지점입니다.</p> </li> </ul> <hr data-start="1397" data-end="1400"> <h2 data-start="1402" data-end="1449"><span class="ez-toc-section" id="%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98_%EC%83%81%ED%83%9C_%EB%84%A4%EC%9E%84%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4_%EB%B0%8F_%EB%B3%B5%EC%A0%9C"></span>애플리케이션 상태: 네임스페이스 및 복제<span class="ez-toc-section-end"></span></h2> <p data-start="1451" data-end="1547">NEAR에서 각 앱의 데이터는 해당 계정에 범위가 지정되어 있습니다. 이는 전용 데이터베이스 스키마 또는 네임스페이스와 같습니다.</p> <ul data-start="1549" data-end="1996"> <li data-start="1549" data-end="1637"> <p data-start="1551" data-end="1637"><strong data-start="1551" data-end="1570">격리된 상태:</strong> 여러분의 계약 코드만 앱의 키-값 저장소를 수정할 수 있습니다.</p> </li> <li data-start="1638" data-end="1736"> <p data-start="1640" data-end="1736"><strong data-start="1640" data-end="1656">감사 트레일:</strong> 모든 변경 사항이 체인에 기록되어 변경할 수 없는 검증 가능한 기록을 만듭니다.</p> </li> <li data-start="1737" data-end="1856"> <p data-start="1739" data-end="1856"><strong data-start="1739" data-end="1761">높은 가용성:</strong> 많은 검증자가 여러분의 상태를 저장하고 제공합니다. 일부가 오프라인 상태가 되어도 여러분의 앱은 접근 가능합니다.</p> </li> <li data-start="1857" data-end="1996"> <p data-start="1859" data-end="1996"><strong data-start="1859" data-end="1889">빠른 최종 일관성:</strong> 요청이 처리되고 합의가 실행되며 약 ~1~2초 안에 새로운 상태가 네트워크 전체에 대해 최종화됩니다.</p> </li> </ul> <p data-start="1998" data-end="2115"><em data-start="1998" data-end="2008">유사성:</em> 클라우드 데이터베이스를 생각해보세요. 멀티 리전 쓰기 복제 및 끄지 않을 수 있는 내장형 감사 로그가 있는 것으로 생각하면 됩니다.</p> <hr data-start="2117" data-end="2120"> <h2 data-start="2122" data-end="2162"><span class="ez-toc-section" id="%EB%B0%B1%EC%97%94%EB%93%9C_%EB%A1%9C%EC%A7%81_%EC%8A%A4%EB%A7%88%ED%8A%B8_%EA%B3%84%EC%95%BD_Wasm"></span>백엔드 로직: 스마트 계약 (Wasm)<span class="ez-toc-section-end"></span></h2> <p data-start="2164" data-end="2300">비즈니스 규칙은 <strong data-start="2194" data-end="2212">스마트 계약</strong>에 있습니다. 이는 웹어셈블리(Wasm)로 컴파일된 작은 프로그램이며 여러분의 앱 계정 아래에 저장됩니다.</p> <ul data-start="2302" data-end="2773"> <li data-start="2302" data-end="2564"> <p data-start="2304" data-end="2564"><strong data-start="2304" data-end="2325">언어 옵션:</strong> 성능과 안전성을 위해 Rust가 가장 일반적인 선택입니다. JavaScript/TypeScript는 NEAR의 도구를 통해 Wasm으로 컴파일됩니다. [명확히 하려면 Rust만 강조할 것인지, near-sdk-js/TypeScript를 명시적으로 포함할 것인지 확인하십시오.]</p> </li> <li data-start="2565" data-end="2672"> <p data-start="2567" data-end="2672"><strong data-start="2567" data-end="2591">격리된 실행:</strong> Wasm은 효율적이며 검증자에서 안전하고 결정론적인 환경에서 실행됩니다.</p> </li> <li data-start="2673" data-end="2773"> <p data-start="2675" data-end="2773"><strong data-start="2675" data-end="2696">명확한 경계:</strong> 각 계약은 자체 상태를 관리하고 클라이언트가 호출하는 함수를 노출합니다.</p> </li> </ul> <p data-start="2775" data-end="2791"><em data-start="2775" data-end="2789">전문 용어 확인</em></p> <ul data-start="2792" data-end="2929"> <li data-start="2792" data-end="2857"> <p data-start="2794" data-end="2857"><strong data-start="2794" data-end="2813">스마트 계약:</strong> 블록체인에서 실행되는 백엔드 코드입니다.</p> </li> <li data-start="2858" data-end="2929"> <p data-start="2860" data-end="2929"><strong data-start="2860" data-end="2883">웹어셈블리 (Wasm):</strong> 빠른 이식 가능한 실행을 위한 이진 형식입니다.</p> </li> </ul> <hr data-start="2931" data-end="2934"> <h2 data-start="2936" data-end="2991"><span class="ez-toc-section" id="%EC%8B%A0%EC%9B%90_%EB%B0%8F_%EA%B6%8C%ED%95%9C_%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9C%BC%EB%A1%9C_%EC%95%94%ED%98%B8%ED%99%94"></span>신원 및 권한: 기본적으로 암호화<span class="ez-toc-section-end"></span></h2> <p data-start="2993" data-end="3065">NEAR은 비밀번호 대신 <strong data-start="3025" data-end="3037">계정</strong>과 <strong data-start="3042" data-end="3064">디지털 서명</strong>을 사용합니다.</p> <ul data-start="3067" data-end="3456"> <li data-start="3067" data-end="3158"> <p data-start="3069" data-end="3158"><strong data-start="3069" data-end="3086">트랜잭션:</strong> 모든 쓰기(상태 변경)는 <a class="wpil_keyword_link" title="NEAR 계정 – Express 가이드" href="https://learnnear.club/near-account-express-guide/" data-wpil-keyword-link="linked" data-wpil-monitor-id="278">NEAR 계정</a>에서 서명된 트랜잭션입니다.</p> </li> <li data-start="3159" data-end="3344"> <p data-start="3161" data-end="3344"><strong data-start="3161" data-end="3180">누가 호출했나요?:</strong> 계약에서 <code data-start="3198" data-end="3222">predecessor_account_id</code>는 함수를 트리거한 계정을 알려줍니다. 이는 암호화에 의해 지원되는 확인된 토큰에서 사용자를 읽는 것과 유사합니다.</p> </li> <li data-start="3345" data-end="3456"> <p data-start="3347" data-end="3456"><strong data-start="3347" data-end="3366">접근 제어:</strong> 호출자의 계정 ID를 사용하여 “이 계정만이 자신의 트윗을 삭제할 수 있음”과 같은 확인을 구축합니다.</p> </li> </ul> <p data-start="3458" data-end="3543"><em data-start="3458" data-end="3468">유사성:</em> 로그인 서버 없이 JWT와 유사합니다. 신원이 플랫폼에 내장되어 있습니다.</p> <hr data-start="3545" data-end="3548"> <h2 data-start="3550" data-end="3596"><span class="ez-toc-section" id="%EA%B0%84%EB%8B%A8%ED%95%9C_Twitter_%EC%8A%A4%ED%83%80%EC%9D%BC_%EC%98%88%EC%A0%9C_%EA%B0%9C%EB%85%90%EC%A0%81"></span>간단한 Twitter 스타일 예제 (개념적)<span class="ez-toc-section-end"></span></h2> <p data-start="3598" data-end="3663">Tweet { id, author, text, timestamp, likes }를 모델링한다고 가정해보세요.</p> <ul data-start="3665" data-end="4037"> <li data-start="3665" data-end="3895"> <p data-start="3667" data-end="3704"><strong data-start="3667" data-end="3702">쓰기 메서드 (상태 변경):</strong></p> <ul data-start="3707" data-end="3895"> <li data-start="3707" data-end="3782"> <p data-start="3709" data-end="3782"><code data-start="3709" data-end="3727">post_tweet(text)</code>: 트윗을 생성하고 작성자 = <code data-start="3755" data-end="3779">predecessor_account_id</code>입니다.</p> </li> <li data-start="3785" data-end="3835"> <p data-start="3787" data-end="3835"><code data-start="3787" data-end="3803">like_tweet(id)</code>: 좋아요 카운터를 증가시킵니다.</p> </li> <li data-start="3838" data-end="3895"> <p data-start="3840" data-end="3895"><code data-start="3840" data-end="3858">delete_tweet(id)</code>: 트윗의 작성자만 삭제할 수 있습니다.</p> </li> </ul> </li> <li data-start="3897" data-end="4037"> <p data-start="3899" data-end="3925"><strong data-start="3899" data-end="3923">읽기 메서드 (보기):</strong></p> <ul data-start="3928" data-end="4037"> <li data-start="3928" data-end="3953"> <p data-start="3930" data-end="3953"><code data-start="3930" data-end="3951">get_tweet_by_id(id)</code></p> </li> <li data-start="3956" data-end="3989"> <p data-start="3958" data-end="3989"><code data-start="3958" data-end="3987">get_all_tweets(from, limit)</code></p> </li> <li data-start="3992" data-end="4037"> <p data-start="3994" data-end="4037"><code data-start="3994" data-end="4037">get_tweets_by_author(author, from, limit)</code></p> </li> </ul> </li> </ul> <p data-start="4039" data-end="4220">디자인적으로 “간단한 색인 액세스 패턴”을 생각하십시오. 복잡한 임시 쿼리(예: 조인)는 계약 내에서 존재하지 않으므로 이를 염두에 두고 데이터 구조 및 반복자를 계획하십시오.</p> <hr data-start="4222" data-end="4225"> <div></div><h2 data-start="4227" data-end="4260"><span class="ez-toc-section" id="%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EA%B0%80_%EC%97%AC%EB%9F%AC%EB%B6%84%EC%9D%98_%EA%B3%84%EC%95%BD%EC%9D%84_%ED%98%B8%EC%B6%9C%ED%95%98%EB%8A%94_%EB%B0%A9%EB%B2%95"></span>클라이언트가 여러분의 계약을 호출하는 방법<span class="ez-toc-section-end"></span></h2> <p data-start="4262" data-end="4307">REST를 반영하는 두 가지 호출 유형이 있습니다:</p> <ol data-start="4309" data-end="4852"> <li data-start="4309" data-end="4665"> <p data-start="4312" data-end="4361"><strong data-start="4312" data-end="4336">상태 변경 호출</strong> (POST/PUT/DELETE와 유사</p> <div class="pointer-events-none h-px w-px" aria-hidden="true" data-edge="true"></div> <p class="updated-date"><span>Updated: 9월 26, 2025</span></p><div class="pld-like-dislike-wrap pld-template-1"> <div class="pld-like-wrap pld-common-wrap"> <a href="javascript:void(0)" class="pld-like-trigger pld-like-dislike-trigger " title="Useful" data-post-id="76191" data-trigger-type="like" data-restriction="cookie" data-already-liked="0"> <i class="fas fa-thumbs-up" style="font-weight: 100;" ></i> </a> <span class="pld-like-count-wrap pld-count-wrap"> </span> </div></div> </div> <div id="ai-control" style="display: flex; gap: 10px;"> <div id="near-ai-summarize-bottom"></div> <div id="near-ai-comments-bottom"></div> <div id="lnc-ai-quiz"></div> </div> <div id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">댓글 달기 <small><a rel="nofollow" id="cancel-comment-reply-link" href="/ko/near-for-backend-developers-your-skills-decentralized-ko/#respond" style="display:none;">댓글 취소</a></small></h3><br/><h4>To leave a comment you should to:</h4><br/><button class=' login-with-near-link' href='#' style='color:#fff; border-radius: 5px;'>Login with NEAR</button> </div><!-- #respond --> <script> jQuery(document).ready(function ($) { let page = 1; const perPage = 10; const totalComments = 0; const loadMoreButton = $('#load-more-comments'); loadMoreButton.on('click', function (event) { event.preventDefault(); page++; const data = { 'action': 'load_more_comments', 'offset': page * perPage, 'postID': '76191', 'security': '1a76295075' }; $.ajax({ url: 'https://learnnear.club/wp-admin/admin-ajax.php', type: 'POST', data: data, success: function (response) { $('.load-more-comments').before(response); if ($.trim(response) === '') { loadMoreButton.hide(); } else { if (page * perPage >= totalComments) { loadMoreButton.hide(); } } }, error: function (xhr, textStatus, errorThrown) { console.error('Error:', errorThrown); }, complete: function () { window.initCommentsJs(); } }); }); }); </script> <script> // ClassicEditor // .create(document.querySelector('#comment')) // .catch(error => { // console.error(error); // }); // window.CKEDITOR.basePath = 'https://learnnear.club/wp-content/themes/techbridge-learn/assets/js/minified/ckeditor/' jQuery(document).ready(($) => { CKEDITOR.replace('comment', { removePlugins: 'about' }); }); </script> </div><!-- #comments --> </div><!-- .entry-content .clear --> </div> </article> <nav class="navigation post-navigation" role="navigation" aria-label="글"> <span class="screen-reader-text">글 탐색</span> <div class="nav-links"><div class="nav-previous"><a href="https://learnnear.club/ko/near-intents-the-future-of-web3-is-intent-driven-ko/" rel="prev"><span class="ast-left-arrow">←</span> 이전 글</a></div></div> </nav> </main> <div id="zone1-wrap"> </div> </div> <div class="widget-area secondary" id="secondary" role="complementary" itemtype="https://schema.org/WPSideBar" itemscope="itemscope"> <div class="sidebar-main" > <aside id="ezw_tco-6" class="widget ez-toc"><div id="ez-toc-widget-container" class="ez-toc-widget-container ez-toc-v2_0_75 ez-toc-widget counter-hierarchy ez-toc-widget-container ez-toc-affix ez-toc-widget-direction"> <nav> <ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#NEAR%EC%9D%84_%EB%B6%84%EC%82%B0%ED%98%95_%EB%B0%B1%EC%97%94%EB%93%9C%EB%A1%9C" >NEAR을 분산형 백엔드로</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98_%EC%83%81%ED%83%9C_%EB%84%A4%EC%9E%84%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4_%EB%B0%8F_%EB%B3%B5%EC%A0%9C" >애플리케이션 상태: 네임스페이스 및 복제</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%EB%B0%B1%EC%97%94%EB%93%9C_%EB%A1%9C%EC%A7%81_%EC%8A%A4%EB%A7%88%ED%8A%B8_%EA%B3%84%EC%95%BD_Wasm" >백엔드 로직: 스마트 계약 (Wasm)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#%EC%8B%A0%EC%9B%90_%EB%B0%8F_%EA%B6%8C%ED%95%9C_%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9C%BC%EB%A1%9C_%EC%95%94%ED%98%B8%ED%99%94" >신원 및 권한: 기본적으로 암호화</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%EA%B0%84%EB%8B%A8%ED%95%9C_Twitter_%EC%8A%A4%ED%83%80%EC%9D%BC_%EC%98%88%EC%A0%9C_%EA%B0%9C%EB%85%90%EC%A0%81" >간단한 Twitter 스타일 예제 (개념적)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EA%B0%80_%EC%97%AC%EB%9F%AC%EB%B6%84%EC%9D%98_%EA%B3%84%EC%95%BD%EC%9D%84_%ED%98%B8%EC%B6%9C%ED%95%98%EB%8A%94_%EB%B0%A9%EB%B2%95" >클라이언트가 여러분의 계약을 호출하는 방법</a></li></ul></nav> </div> </aside> </div><!-- .sidebar-main --> </div><!-- #secondary --> </div> <div class="ast-container"> <div class='other-guides'> <div class='other-guides-title'> More Guides </div> <div class='ast-row'> <div class="ast-col-md-6 other-guides-item"> <a href="https://learnnear.club/ko/embracing-web3-through-chain-abstraction-a-path-to-digital-self-sovereignty-ko/"> <div class="post-thumb-img-content post-thumb"><picture><source srcset="https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-1024x457.webp 1024w,https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-300x134.webp 300w,https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-768x343.webp 768w,https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-150x67.webp 150w,https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction.webp 1200w" sizes="(max-width: 1024px) 100vw, 1024px" type="image/webp"><img src="https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-1024x457.png" height="457" width="1024" srcset="https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-1024x457.png 1024w, https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-300x134.png 300w, https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-768x343.png 768w, https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction-150x67.png 150w, https://learnnear.club/wp-content/uploads/2024/02/chain-abstraction.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" class="attachment-large size-large wp-post-image sp-no-webp" alt="" itemprop="image" decoding="async" fetchpriority="high" > </picture></div> </a> <div class='meta'> 3 min read • By Sasha | ahsaS.NEAR </div> <a href="https://learnnear.club/ko/embracing-web3-through-chain-abstraction-a-path-to-digital-self-sovereignty-ko/" class='title'> 웹3을 통한 체인 추상화 수용: 디지턈 자기 주권으로 가는 길 </a> </div> <div class="ast-col-md-6 other-guides-item"> <a href="https://learnnear.club/ko/what-are-learner-nfts-ko/"> <div class="post-thumb-img-content post-thumb"><picture><source srcset="https://learnnear.club/wp-content/uploads/2022/08/header-desktop-1024x342.jpg 1024w,https://learnnear.club/wp-content/uploads/2022/08/header-desktop-300x100.webp 300w,https://learnnear.club/wp-content/uploads/2022/08/header-desktop-768x256.webp 768w,https://learnnear.club/wp-content/uploads/2022/08/header-desktop-150x50.webp 150w,https://learnnear.club/wp-content/uploads/2022/08/header-desktop.webp 1100w" sizes="(max-width: 1024px) 100vw, 1024px" type="image/webp"><img src="https://learnnear.club/wp-content/uploads/2022/08/header-desktop-1024x342.jpg" height="342" width="1024" srcset="https://learnnear.club/wp-content/uploads/2022/08/header-desktop-1024x342.jpg 1024w, https://learnnear.club/wp-content/uploads/2022/08/header-desktop-300x100.jpg 300w, https://learnnear.club/wp-content/uploads/2022/08/header-desktop-768x256.jpg 768w, https://learnnear.club/wp-content/uploads/2022/08/header-desktop-150x50.jpg 150w, https://learnnear.club/wp-content/uploads/2022/08/header-desktop.jpg 1100w" sizes="(max-width: 1024px) 100vw, 1024px" class="attachment-large size-large wp-post-image sp-no-webp" alt="(L)Earner" itemprop="image" decoding="async" > </picture></div> </a> <div class='meta'> 3 min read • By lncer.near </div> <a href="https://learnnear.club/ko/what-are-learner-nfts-ko/" class='title'> (L)Earner NFTs는 NEAR Protocol에서 사용되는 특별한 유형의 NFT입니다. NEAR 생태계에서 사용자가 수익을 창출하고 배포하는 방법 중 하나입니다. NFT를 보유하고 있는 사용자는 수익을 얻을 수 있으며, 이는 NEAR 생태계의 발전에 기여할 수 있습니다. </a> </div> </div> </div> </div> <!-- ast-container --> </div><!-- #content --> <footer class="site-footer" id="colophon" itemtype="https://schema.org/WPFooter" itemscope="itemscope" itemid="#colophon"> <div class="site-below-footer-wrap ast-builder-grid-row-container site-footer-focus-item ast-builder-grid-row-2-lheavy ast-builder-grid-row-tablet-2-equal ast-builder-grid-row-mobile-full ast-footer-row-stack ast-footer-row-tablet-stack ast-footer-row-mobile-stack" data-section="section-below-footer-builder"> <div class="ast-builder-grid-row-container-inner"> <div class="ast-builder-footer-grid-columns site-below-footer-inner-wrap ast-builder-grid-row"> <div class="site-footer-below-section-1 site-footer-section site-footer-section-1"> <div class="ast-builder-layout-element ast-flex site-footer-focus-item ast-footer-copyright" data-section="section-footer-builder"> <div class="ast-footer-copyright"><p><img style="vertical-align: text-top;" src="/wp-content/uploads/2021/10/logo.svg" alt="LEARN NEAR CLUB" width="190" height="19" />   © 2025 <a href="https://learnnear.club/" target="_blank" rel="noopener">Learn NEAR Club</a> | Powered by <a href="https://wordpress.org/" target="_blank" rel="noopener">WordPress</a> & <a href="https://near.org/" target="_blank" rel="noopener">NEAR</a></p> </div> </div> </div> <div class="site-footer-below-section-2 site-footer-section site-footer-section-2"> <div class="ast-builder-layout-element ast-flex site-footer-focus-item" data-section="section-fb-social-icons-1"> <div class="ast-footer-social-1-wrap ast-footer-social-wrap"><div class="footer-social-inner-wrap element-social-inner-wrap social-show-label-false ast-social-color-type-custom ast-social-stack-none ast-social-element-style-filled"><a href="https://twitter.com/LearnNear" target="_blank" rel="noopener noreferrer" style="--color: #7acdee; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-twitter footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><path d='M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z'></path></svg></span></a><a href="https://t.me/LearnNEARClub/40281" target="_blank" rel="noopener noreferrer" style="--color: #229CCE; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-telegram footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'><path d='M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z'></path></svg></span></a><a href="https://github.com/Learn-NEAR-Club" target="_blank" rel="noopener noreferrer" style="--color: #24292e; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-github footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'><path d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z'></path></svg></span></a><a href="https://www.youtube.com/channel/UCeZkMQPlfNNj1jRlns8zAFA" target="_blank" rel="noopener noreferrer" style="--color: #e96651; --background-color: transparent;" class="ast-builder-social-element ast-inline-flex ast-youtube footer-social-item"><span class="ahfb-svg-iconset ast-inline-flex svg-baseline"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'><path d='M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z'></path></svg></span></a></div></div> </div> </div> </div> </div> </div> </footer><!-- #colophon --> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/techbridge-learn\/*","\/wp-content\/themes\/astra\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script> window.wpApiSettings = { restApiUrl: 'https://learnnear.club/wp-json/', lncerApiHost: 'https://lncer-api-4b807df1d2f9.herokuapp.com/', nonce: '44864e4430', }; window.totalNFTS = 0; </script> <script> // Used by Gallery Custom Links to handle tenacious Lightboxes //jQuery(document).ready(function () { function mgclInit() { // In jQuery: // if (jQuery.fn.off) { // jQuery('.no-lightbox, .no-lightbox img').off('click'); // jQuery 1.7+ // } // else { // jQuery('.no-lightbox, .no-lightbox img').unbind('click'); // < jQuery 1.7 // } // 2022/10/24: In Vanilla JS var elements = document.querySelectorAll('.no-lightbox, .no-lightbox img'); for (var i = 0; i < elements.length; i++) { elements[i].onclick = null; } // In jQuery: //jQuery('a.no-lightbox').click(mgclOnClick); // 2022/10/24: In Vanilla JS: var elements = document.querySelectorAll('a.no-lightbox'); for (var i = 0; i < elements.length; i++) { elements[i].onclick = mgclOnClick; } // in jQuery: // if (jQuery.fn.off) { // jQuery('a.set-target').off('click'); // jQuery 1.7+ // } // else { // jQuery('a.set-target').unbind('click'); // < jQuery 1.7 // } // jQuery('a.set-target').click(mgclOnClick); // 2022/10/24: In Vanilla JS: var elements = document.querySelectorAll('a.set-target'); for (var i = 0; i < elements.length; i++) { elements[i].onclick = mgclOnClick; } } function mgclOnClick() { if (!this.target || this.target == '' || this.target == '_self') window.location = this.href; else window.open(this.href,this.target); return false; } // From WP Gallery Custom Links // Reduce the number of conflicting lightboxes function mgclAddLoadEvent(func) { var oldOnload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldOnload(); func(); } } } mgclAddLoadEvent(mgclInit); mgclInit(); //}); </script> <script> function sha256(ascii) { function rightRotate(value, amount) { return (value>>>amount) | (value<<(32 - amount)); } var mathPow = Math.pow; var maxWord = mathPow(2, 32); var lengthProperty = 'length'; var i, j; var result = ''; var words = []; var asciiBitLength = ascii[lengthProperty]*8; var hash = sha256.h = sha256.h || []; var k = sha256.k = sha256.k || []; var primeCounter = k[lengthProperty]; var isComposite = {}; for (var candidate = 2; primeCounter < 64; candidate++) { if (!isComposite[candidate]) { for (i = 0; i < 313; i += candidate) { isComposite[i] = candidate; } hash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0; k[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0; } } ascii += '\x80'; while (ascii[lengthProperty]%64 - 56) ascii += '\x00'; for (i = 0; i < ascii[lengthProperty]; i++) { j = ascii.charCodeAt(i); if (j>>8) return; words[i>>2] |= j << ((3 - i)%4)*8; } words[words[lengthProperty]] = ((asciiBitLength/maxWord)|0); words[words[lengthProperty]] = (asciiBitLength); for (j = 0; j < words[lengthProperty];) { var w = words.slice(j, j += 16); var oldHash = hash; hash = hash.slice(0, 8); for (i = 0; i < 64; i++) { var w15 = w[i - 15], w2 = w[i - 2]; var a = hash[0], e = hash[4]; var temp1 = hash[7] + ( (e>>>6 | e<<26) ^ (e>>>11 | e<<21) ^ (e>>>25 | e<<7) ) + ((e&hash[5])^((~e)&hash[6])) + k[i] + (w[i] = (i < 16) ? w[i] : ( w[i - 16] + ((w15>>>7 | w15<<25) ^ (w15>>>18 | w15<<14) ^ (w15>>>3)) + w[i - 7] + ((w2>>>17 | w2<<15) ^ (w2>>>19 | w2<<13) ^ (w2>>>10)) )|0 ); var temp2 = ((a>>>2 | a<<30) ^ (a>>>13 | a<<19) ^ (a>>>22 | a<<10)) + ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2])); hash = [(temp1+temp2)|0].concat(hash); hash[4] = (hash[4] + temp1)|0; } for (i = 0; i < 8; i++) { hash[i] = (hash[i] + oldHash[i])|0; } } for (i = 0; i < 8; i++) { for (j = 3; j + 1; j--) { var b = (hash[i]>>(j*8))&255; result += ((b < 16) ? 0 : '') + b.toString(16); } } return result; } document.addEventListener("DOMContentLoaded", () => { const textArea = document.getElementById("hashData"); const output = document.getElementById("generated-hash-input"); if (!textArea || !output) return; textArea.addEventListener("input", (e) => { const text = e.target.value.trim(); const hash = text ? sha256(text) : ""; output.value = hash; }); }); </script> <script> window.aiSummary = '다음 텍스트를 번역합니다. NEAR 프로토콜과 관련된 모든 용어입니다. HTML 태그를 보존하되 응답에서 , , , 와 같은 태그를 생성하지 마십시오. \'Burrow\', \'NEAR\', \'BRR\', \'stNEAR\' 등의 특정 이름이나 토큰을 번역하지 마십시오:\n\n\n\n\n\n\n소개백엔드를 구축하는 경우, 이미 API를 설계하고 상태를 저장하며 사용자를 관리하는 방법을 알고 있습니다. NEAR 프로토콜을 사용하면 동일한 직관을 사용할 수 있습니다. 다만, 여러분의 서버 대신 분산 네트워크에서 작동합니다. NEAR은 "호스팅할 필요가 없는 백엔드"로 생각할 수 있습니다. 비즈니스 로직은 스마트 계약(미니 프로그램)으로 실행되며, 데이터는 네트워크에서 관리되는 복제 저장소에 저장되며, 사용자 ID는 암호화로 확인됩니다. 이 강의에서는 익숙한 백엔드 아이디어를 NEAR 개념에 매핑하고 간단한 Twitter 스타일 예제를 통해 읽기 및 쓰기 작업이 어떻게 작동하는지 살펴보겠습니다. 마지막에는 웹2에서 NEAR로 이동하는 것이 적응이며, 새로운 창조가 아님을 알게 될 것입니다.\n\n\n\n\nNEAR을 분산형 백엔드로\n유지하지 않는 글로벌 클러스터에서 실행되는 서비스를 배포한다고 상상해보세요. 이것이 NEAR입니다. 여러분의 애플리케이션은 자체 코드와 데이터를 가진 계정(예: twitter-app.yourname.near)입니다. 독립적인 검증자(네트워크 노드)가 해당 데이터를 복제하고 제공합니다. 사용자가 상호 작용할 때 네트워크는 일반적으로 ~1~2초 안에 결과에 대한 논란이 없는 합의에 도달합니다.\n전문 용어 확인\n\n\n \n검증자: NEAR 소프트웨어를 실행하고 계약을 실행하며 합의에 참여하는 노드입니다.\n\n \n최종성: 변경 사항이 잠겨지고 되돌릴 수 없는 지점입니다.\n\n\n\n\n\n애플리케이션 상태: 네임스페이스 및 복제\nNEAR에서 각 앱의 데이터는 해당 계정에 범위가 지정되어 있습니다. 이는 전용 데이터베이스 스키마 또는 네임스페이스와 같습니다.\n\n\n \n격리된 상태: 여러분의 계약 코드만 앱의 키-값 저장소를 수정할 수 있습니다.\n\n \n감사 트레일: 모든 변경 사항이 체인에 기록되어 변경할 수 없는 검증 가능한 기록을 만듭니다.\n\n \n높은 가용성: 많은 검증자가 여러분의 상태를 저장하고 제공합니다. 일부가 오프라인 상태가 되어도 여러분의 앱은 접근 가능합니다.\n\n \n빠른 최종 일관성: 요청이 처리되고 합의가 실행되며 약 ~1~2초 안에 새로운 상태가 네트워크 전체에 대해 최종화됩니다.\n\n\n유사성: 클라우드 데이터베이스를 생각해보세요. 멀티 리전 쓰기 복제 및 끄지 않을 수 있는 내장형 감사 로그가 있는 것으로 생각하면 됩니다.\n\n\n\n\n백엔드 로직: 스마트 계약 (Wasm)\n비즈니스 규칙은 스마트 계약에 있습니다. 이는 웹어셈블리(Wasm)로 컴파일된 작은 프로그램이며 여러분의 앱 계정 아래에 저장됩니다.\n\n\n \n언어 옵션: 성능과 안전성을 위해 Rust가 가장 일반적인 선택입니다. JavaScript/TypeScript는 NEAR의 도구를 통해 Wasm으로 컴파일됩니다. [명확히 하려면 Rust만 강조할 것인지, near-sdk-js/TypeScript를 명시적으로 포함할 것인지 확인하십시오.]\n\n \n격리된 실행: Wasm은 효율적이며 검증자에서 안전하고 결정론적인 환경에서 실행됩니다.\n\n \n명확한 경계: 각 계약은 자체 상태를 관리하고 클라이언트가 호출하는 함수를 노출합니다.\n\n\n전문 용어 확인\n\n\n \n스마트 계약: 블록체인에서 실행되는 백엔드 코드입니다.\n\n \n웹어셈블리 (Wasm): 빠른 이식 가능한 실행을 위한 이진 형식입니다.\n\n\n\n\n\n신원 및 권한: 기본적으로 암호화\nNEAR은 비밀번호 대신 계정과 디지털 서명을 사용합니다.\n\n\n \n트랜잭션: 모든 쓰기(상태 변경)는 NEAR 계정에서 서명된 트랜잭션입니다.\n\n \n누가 호출했나요?: 계약에서 predecessor_account_id는 함수를 트리거한 계정을 알려줍니다. 이는 암호화에 의해 지원되는 확인된 토큰에서 사용자를 읽는 것과 유사합니다.\n\n \n접근 제어: 호출자의 계정 ID를 사용하여 "이 계정만이 자신의 트윗을 삭제할 수 있음"과 같은 확인을 구축합니다.\n\n\n유사성: 로그인 서버 없이 JWT와 유사합니다. 신원이 플랫폼에 내장되어 있습니다.\n\n\n\n\n간단한 Twitter 스타일 예제 (개념적)\nTweet { id, author, text, timestamp, likes }를 모델링한다고 가정해보세요.\n\n\n \n쓰기 메서드 (상태 변경):\n\n\n \npost_tweet(text): 트윗을 생성하고 작성자 = predecessor_account_id입니다.\n\n \nlike_tweet(id): 좋아요 카운터를 증가시킵니다.\n\n \ndelete_tweet(id): 트윗의 작성자만 삭제할 수 있습니다.\n\n\n\n \n읽기 메서드 (보기):\n\n\n \nget_tweet_by_id(id)\n\n \nget_all_tweets(from, limit)\n\n \nget_tweets_by_author(author, from, limit)\n\n\n\n\n디자인적으로 "간단한 색인 액세스 패턴"을 생각하십시오. 복잡한 임시 쿼리(예: 조인)는 계약 내에서 존재하지 않으므로 이를 염두에 두고 데이터 구조 및 반복자를 계획하십시오.\n\n\n\n\n클라이언트가 여러분의 계약을 호출하는 방법\nREST를 반영하는 두 가지 호출 유형이 있습니다:\n\n\n \n상태 변경 호출 (POST/PUT/DELETE와 유사 updated: 2025-09-26 11:12:47'; window.aiPostTitle = '백엔드 개발자를 위한 NEAR: 당신의 기술, 탈중앙화'; window.aiPostID = '76191'; window.aiAllowCOmment = '1'; </script> <script> jQuery(document).ready(function () { jQuery('p#user_switching_switch_on').css('position', 'relative'); }) </script> <script> jQuery(document).ready(function () { jQuery('p#user_switching_switch_on').css('float', 'right').css('padding-right', '10px'); }) </script> <div id="pum-55996" role="dialog" aria-modal="false" aria-labelledby="pum_popup_title_55996" class="pum pum-overlay pum-theme-6877 pum-theme-enterprise-blue popmake-overlay click_open" data-popmake="{"id":55996,"slug":"start-learning-with-this-course","theme_id":6877,"cookies":[],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":null,"tablet_disabled":null,"meta":{"display":{"stackable":false,"overlay_disabled":false,"scrollable_content":false,"disable_reposition":false,"size":"medium","responsive_min_width":"0%","responsive_min_width_unit":false,"responsive_max_width":"100%","responsive_max_width_unit":false,"custom_width":"640px","custom_width_unit":false,"custom_height":"380px","custom_height_unit":false,"custom_height_auto":false,"location":"center top","position_from_trigger":false,"position_top":"100","position_left":"0","position_bottom":"0","position_right":"0","position_fixed":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","overlay_zindex":false,"zindex":"1999999999"},"close":{"text":"","button_delay":"0","overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div id="popmake-55996" class="pum-container popmake theme-6877 pum-responsive pum-responsive-medium responsive size-medium"> <div id="pum_popup_title_55996" class="pum-title popmake-title"> Start (l)earning with this Course! </div> <div class="pum-content popmake-content" tabindex="0"> <p><img decoding="async" class="size-medium wp-image-70756 aligncenter" src="https://learnnear.club/wp-content/uploads/2023/10/near-101-nano-course-1024x457-1-300x134.webp" alt="" width="300" height="134" srcset="https://learnnear.club/wp-content/uploads/2023/10/near-101-nano-course-1024x457-1-300x134.webp 300w, https://learnnear.club/wp-content/uploads/2023/10/near-101-nano-course-1024x457-1-768x343.webp 768w, https://learnnear.club/wp-content/uploads/2023/10/near-101-nano-course-1024x457-1-150x67.webp 150w, https://learnnear.club/wp-content/uploads/2023/10/near-101-nano-course-1024x457-1.webp 1024w" sizes="(max-width: 300px) 100vw, 300px" /></p> <p style="text-align: center;"><a href="https://learnnear.club/courses/near-101/">Start (l)earning with this Course!</a></p> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <div id="pum-6884" role="dialog" aria-modal="false" aria-labelledby="pum_popup_title_6884" class="pum pum-overlay pum-theme-6877 pum-theme-enterprise-blue popmake-overlay pum-overlay-disabled click_open" data-popmake="{"id":6884,"slug":"lets-login","theme_id":6877,"cookies":[{"event":"on_popup_close","settings":{"name":"pum-6884","key":"","session":null,"path":true,"time":"1 month"}}],"triggers":[{"type":"click_open","settings":{"extra_selectors":"","cookie_name":null}}],"mobile_disabled":true,"tablet_disabled":true,"meta":{"display":{"stackable":false,"overlay_disabled":"1","scrollable_content":false,"disable_reposition":false,"size":"auto","responsive_min_width":"0%","responsive_min_width_unit":false,"responsive_max_width":"50%","responsive_max_width_unit":false,"custom_width":"750px","custom_width_unit":false,"custom_height":"350px","custom_height_unit":false,"custom_height_auto":"1","location":"center","position_from_trigger":false,"position_top":"100","position_left":"0","position_bottom":"100","position_right":"0","position_fixed":"1","animation_type":"fade","animation_speed":"350","animation_origin":"center top","overlay_zindex":false,"zindex":"1999999999"},"close":{"text":"","button_delay":"0","overlay_click":false,"esc_press":false,"f4_press":false},"click_open":[]}}"> <div id="popmake-6884" class="pum-container popmake theme-6877 pum-position-fixed"> <div id="pum_popup_title_6884" class="pum-title popmake-title"> Login to (L)Earn! </div> <div class="pum-content popmake-content" tabindex="0"> <div class="nws-modal"> <div class="modal-left"> <div class="modal-left-title"> <h2> <p> Connect Your Wallet</p> </h2> </div> <div class="nws-modal-body"> <div class="wallet-options-wrapper"> <ul class="options-list"> <div class="single-wallet sidebar near-wallet"> <button class=' login-with-near-link' href='#' style='color:#fff; border-radius: 5px;'>Login with NEAR</button> </div> <p> <button class="single-wallet sidebar my-near-wallet login-my-near-wallet" id="login-my-near-wallet" type="button"></p> <div class="icon"><img decoding="async" src="/wp-content/themes/techbridge-learn/assets/images/my-near-wallet-icon.png" alt="My NEAR Wallet"></div> <div class="content"> <div class="title">MyNearWallet</div> <div class="description">Web wallet for NEAR Protocol</div> </p></div> <p> </button></p> <p> <button class="single-wallet sidebar login-here-wallet" id="login-here-wallet"></p> <div class="icon"><img decoding="async" src="/wp-content/themes/techbridge-learn/assets/images/here-wallet.png" alt="Here Wallet (mobile)"></div> <div class="content"> <div class="title">Here Wallet (mobile)</div> <div class="description">Mobile wallet for NEAR Protocol</div> </p></div> <p> </button></p> </ul> </div> </div> </div> <div class="modal-right"> <div class="nws-modal-body"> <div class="wallet-home-wrapper"> <div class="nws-modal-header-wrapper"> <div class="nws-modal-header"> <h3 class="middleTitle"> <p> What is a Wallet?</p> </h3> </div> </div> <div class="wallet-info-wrapper what-wallet-hide"> <div class="wallet-what"> <div class="icon-side"> <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M33.5 1.83325L30.1666 5.16658M17.4818 17.8514C19.1406 19.5103 20.1666 21.8019 20.1666 24.3333C20.1666 29.3959 16.0626 33.4999 11 33.4999C5.93735 33.4999 1.8333 29.3959 1.8333 24.3333C1.8333 19.2706 5.93735 15.1666 11 15.1666C13.5313 15.1666 15.8229 16.1926 17.4818 17.8514ZM17.4818 17.8514L24.3333 10.9999M24.3333 10.9999L29.3333 15.9999L35.1666 10.1666L30.1666 5.16658M24.3333 10.9999L30.1666 5.16658" stroke="#568FFC" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <div class="content-side"> <h3>Secure & Manage Your Digital Assets</h3> <p>Safely store and transfer your crypto and NFTs.</p> </p></div> </p></div> <div class="wallet-what"> <div class="icon-side"> <svg width="40" height="41" viewBox="0 0 40 41" fill="none" xmlns="http://www.w3.org/2000/svg"> <circle cx="28.3333" cy="23.8333" r="1.66667" fill="#568FFC"></circle> <path d="M35 12.1667H7C5.89543 12.1667 5 11.2712 5 10.1667V7.5C5 6.39543 5.89543 5.5 7 5.5H31.6667" stroke="#568FFC" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M35 12.1667V35.5H7C5.89543 35.5 5 34.6046 5 33.5V8.83334" stroke="#568FFC" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <div class="content-side"> <h3>Log In to Any NEAR App</h3> <p>No need to create new accounts or credentials. Connect your wallet and you are good to go!</p> </p></div> </p></div> <div class="button-spacing"></div> <p><!-- <button class="middleButton" id="get-a-wallet-button"> Get a Wallet </button> --> </div> </p></div> </p></div> </p></div> </p></div> </div> <button type="button" class="pum-close popmake-close" aria-label="Close"> × </button> </div> </div> <script type="text/javascript"> function genesisBlocksShare( url, title, w, h ){ var left = ( window.innerWidth / 2 )-( w / 2 ); var top = ( window.innerHeight / 2 )-( h / 2 ); return window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=600, height=600, top='+top+', left='+left); } </script> <script type="text/html" id="tmpl-cmswt-Result-itemTemplate--default"> <# if(data.taxonomy === undefined){ #> <div class="hit-header"> <# var imageHTML = ''; if(data.post_thumbnail_html !== undefined && data.post_thumbnail_html !== ''){ imageHTML = data.post_thumbnail_html }else if(data.post_thumbnail !== undefined && data.post_thumbnail !== ''){ imageHTML = `<img src="${data.post_thumbnail}" alt="${data.post_title}" class="ais-Hit-itemImage" />` } else{ imageHTML = `<img src="https://learnnear.club/wp-content/plugins/search-with-typesense/assets/images/placeholder-300x300.jpg" alt="${data.post_title}" class="ais-Hit-itemImage" />` } #> <# if(imageHTML !== ''){ #> <a href="{{{data._highlightResult.permalink.value}}}" class="hit-header--link" rel="nofollow noopener">{{{imageHTML}}}</a> <# } #> </div> <# } #> <div class="hit-content"> <# if(data._highlightResult.permalink !== undefined ) { #> <a href="{{{data._highlightResult.permalink.value}}}" class="hit-contentLink" rel="nofollow noopener"><h5 class="title"> {{{data.formatted.post_title}}}</h5></a> <# } #> <# if( data.post_type === 'post' ) { #> <div class="hit-meta"> <span class="posted-by"> By {{data.post_author}} </span> <span class="posted-on"> <time datetime="">{{data.formatted.postedDate}}</time> </span> <# if ( Object.keys(data.formatted.cats).length > 0 ) { #> <div class="hit-cats"> <# for ( let key in data.formatted.cats ) { #> <div class="hit-cat"><a href="{{{data.formatted.cats[key]}}}">{{{key}}}</a>,</div> <# } #> </div> <# } #> </div> <# } #> <div class="hit-description">{{{data.formatted.post_content}}}</div> <div class="hit-link"> <a href="{{data.permalink}}">Read More...</a> </div> </div> </script><script type="text/html" id="tmpl-cmswt-NoSearchResults-default"> <div class="cmswt-noSearchResults cmswt-NoSearchResults-default"> No results found </div> </script><script type="text/html" id="tmpl-cm-autocomplete"> <div class="aa-ItemWrapper"> <div class="aa-ItemContent"> <div class="aa-ItemIcon aa-ItemIcon--alignTop"> <# if ( data.document.post_thumbnail !== '' && data.document.post_thumbnail !== undefined ) { #> <img src="{{{data.document.post_thumbnail}}}" alt="{{data.document.post_title}}" width="40" height="40" /> <# } else { #> <img src="https://learnnear.club/wp-content/plugins/search-with-typesense/assets/placeholder.jpg" alt="{{data.document.post_title}}" width="40" height="40" /> <# } #> </div> <div class="aa-ItemContentBody"> <div class="aa-ItemContentTitle"> {{{data.formatted.post_title}}} </div> <div class="aa-ItemContentDescription"> {{data.formatted.sliced_content}} </div> </div> </div> </div> </script><script type="text/html" id="tmpl-cm-autocomplete-header"> <h5>{{{data.name}}}</h5> </script><script type="text/html" id="tmpl-cm-autocomplete-no-results-found">No Results Found</script><a id="ast-scroll-top" class="ast-scroll-top-icon ast-scroll-to-top-right" data-on-devices="both"> <span class="screen-reader-text">Scroll to Top</span> </a> <script> function copy_to_clipBoard() { var copyText = document.getElementById("mref-link-buddypress-profile"); copyText.select(); document.execCommand("copy"); } </script> <link rel='stylesheet' id='learner_style-css' href='https://learnnear.club/wp-content/plugins/TBNMan/public/css/learner.css?ver=6.8.2' type='text/css' media='all' /> <script src="https://learnnear.club/wp-content/plugins/LNCWpCalExtension//public/index.js?ver=0.0.1" id="wp-cal-extension-js"></script> <script data-wpacu-to-be-preloaded-basic='1' src="https://learnnear.club/wp-content/plugins/LncNStamp/public/main.js?ver=0.0.12" id="lnc-n-stamp-js"></script> <script id="lnc-ads-js-extra"> var near_login = {"ajaxUrl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","user":null}; </script> <script src="https://learnnear.club/wp-content/plugins/lnc-ads/public/index.js?ver=0.01" id="lnc-ads-js"></script> <script src="https://learnnear.club/wp-content/plugins/lnc-ai-translation/public/main.js?ver=0.01" id="lnc-ai-translation-js"></script> <script src="https://learnnear.club/wp-content/plugins/tb-ncaptcha-gravity-addon/public/nCaptcha.js?ver=1758907736" id="n-captcha-lib-js"></script> <script src="https://learnnear.club/wp-content/plugins/tb-ncaptcha-gravity-addon/public/index.js?ver=1758907736" id="tb-n-captcha-gravity-addon-js"></script> <script id="learndash-front-js-extra"> var ldVars = {"postID":"76191","videoReqMsg":"You must watch the video before accessing this content","ajaxurl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php"}; </script> <script src="//learnnear.club/wp-content/plugins/sfwd-lms/themes/ld30/assets/js/learndash.js?ver=3.6.0" id="learndash-front-js"></script> <script id="learndash-front-js-after"> jQuery(document).ready(function($) { function lds_init_custom_icons() { // console.log('running custom icons!'); $('.ld-icon.ld-icon-checkmark').addClass('fa fas fa-check-square '); $('.ld-icon.ld-icon-quiz').addClass('fa fas fa-question '); $('.ld-icon.ld-icon-calendar').addClass('fa far fa-calendar-alt '); $('.ld-icon.ld-icon-unlocked').addClass('fa fas fa-lock-open '); $('.ld-icon.ld-icon-arrow-right').addClass('fa fas fa-angle-right '); $('.ld-icon.ld-icon-arrow-down').addClass('fa fas fa-chevron-down '); $('.ld-icon.ld-icon-arrow-left').addClass('fa fas fa-chevron-left '); $('.ld-icon.ld-icon-content').addClass('fa fas fa-bars '); $('.ld-icon.ld-icon-materials').addClass('fa fas fa-align-justify '); $('.ld-icon.ld-icon-certificate').addClass('fa fas fa-certificate '); $('.ld-icon.ld-icon-assignment').addClass('fa fas fa-tasks '); $('.ld-icon.ld-icon-download').addClass('fa fas fa-cloud-download-alt '); $('.ld-icon.ld-icon-comments').addClass('fa far fa-comment-alt '); } lds_init_custom_icons(); $('body').on( 'ld_has_paginated', function() { lds_init_custom_icons(); }); }); </script> <script id="ldvc-js-extra"> var ldvc = {"theme":"playful","template":"expanded"}; </script> <script src="https://learnnear.club/wp-content/plugins/ld-visual-customizer/assets/js/ldvc.js?ver=2.3.8" id="ldvc-js"></script> <script src="https://learnnear.club/wp-includes/js/comment-reply.min.js?ver=6.8.2" id="comment-reply-js" async data-wp-strategy="async"></script> <script id="astra-theme-js-js-extra"> var astra = {"break_point":"921","isRtl":"","query_vars":"{\"page\":\"\",\"name\":\"near-for-backend-developers-your-skills-decentralized-ko\",\"lang\":\"ko\"}","edit_post_url":"https:\/\/learnnear.club\/wp-admin\/post.php?post={{id}}&action=edit","ajax_url":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","infinite_count":"2","astinfiniteposttype":"post","infinite_total":"0","pagination":"number","infinite_scroll_event":"scroll","infinite_nonce":"ea57b4c9cf","no_more_post_message":"No more posts to show.","grid_layout":"1","site_url":"https:\/\/learnnear.club","show_comments":"Show Comments","masonryEnabled":"","blogMasonryBreakPoint":"921"}; </script> <script src="https://learnnear.club/wp-content/themes/astra/assets/js/minified/frontend.min.js?ver=3.7.6" id="astra-theme-js-js"></script> <script src="https://learnnear.club/wp-content/themes/astra/assets/js/minified/frontend-pro.min.js?ver=3.7.6" id="astra-theme-js-pro-js"></script> <script src="https://learnnear.club/wp-content/plugins/LNCNstampGravityAddon/public/index.js?ver=1758907736" id="tb-n-stamp-gravity-addon-js"></script> <script src="https://learnnear.club/wp-content/plugins//lnc-ai-faq/public/index.js?ver=20232102131900" id="lnc-ai-shortcode-js"></script> <script id="ppress-frontend-script-js-extra"> var pp_ajax_form = {"ajaxurl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","confirm_delete":"Are you sure?","deleting_text":"Deleting...","deleting_error":"An error occurred. Please try again.","nonce":"9e586f0012","disable_ajax_form":"false","is_checkout":"0","is_checkout_tax_enabled":"0","is_checkout_autoscroll_enabled":"true"}; </script> <script src="https://learnnear.club/wp-content/plugins/wp-user-avatar/assets/js/frontend.min.js?ver=4.16.4" id="ppress-frontend-script-js"></script> <script id="ez-toc-scroll-scriptjs-js-extra"> var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""}; </script> <script src="https://learnnear.club/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.75" id="ez-toc-scroll-scriptjs-js"></script> <script src="https://learnnear.club/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1" id="ez-toc-js-cookie-js"></script> <script src="https://learnnear.club/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2" id="ez-toc-jquery-sticky-kit-js"></script> <script id="ez-toc-js-js-extra"> var ezTOC = {"smooth_scroll":"1","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>","chamomile_theme_is_on":""}; </script> <script src="https://learnnear.club/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.75-1751624237" id="ez-toc-js-js"></script> <script src="https://learnnear.club/wp-content/plugins/genesis-blocks/dist/assets/js/dismiss.js?ver=1635871232" id="genesis-blocks-dismiss-js-js"></script> <script src="https://learnnear.club/wp-content/themes/techbridge-learn/assets/js/jquery.modal.js?ver=23" id="tb-modal-js"></script> <script src="https://learnnear.club/wp-content/themes/techbridge-learn/assets/app.js?ver=23" id="tb-js"></script> <script id="astra-addon-js-js-extra"> var astraAddon = {"sticky_active":"","is_header_builder_active":"1"}; </script> <script src="https://learnnear.club/wp-content/uploads/astra-addon/astra-addon-68d6a97f5c47e0-27378799.js?ver=3.1.0" id="astra-addon-js-js"></script> <script src="https://learnnear.club/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script> <script id="popup-maker-site-js-extra"> var pum_vars = {"version":"1.20.5","pm_dir_url":"https:\/\/learnnear.club\/wp-content\/plugins\/popup-maker\/","ajaxurl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","restapi":"https:\/\/learnnear.club\/wp-json\/pum\/v1","rest_nonce":null,"default_theme":"6877","debug_mode":"","disable_tracking":"","home_url":"\/","message_position":"top","core_sub_forms_enabled":"1","popups":[],"cookie_domain":"","analytics_route":"analytics","analytics_api":"https:\/\/learnnear.club\/wp-json\/pum\/v1"}; var pum_sub_vars = {"ajaxurl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","message_position":"top"}; var pum_popups = {"pum-55996":{"triggers":[],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":"6877","size":"medium","responsive_min_width":"0%","responsive_max_width":"100%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center top","position_top":"100","position_bottom":"0","position_left":"0","position_right":"0","position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":"1999999999","close_button_delay":"0","fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":"0","close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"enterprise-blue","id":55996,"slug":"start-learning-with-this-course"},"pum-6884":{"triggers":[],"cookies":[{"event":"on_popup_close","settings":{"name":"pum-6884","key":"","session":null,"path":true,"time":"1 month"}}],"disable_on_mobile":true,"disable_on_tablet":true,"atc_promotion":null,"explain":null,"type_section":null,"theme_id":"6877","size":"auto","responsive_min_width":"0%","responsive_max_width":"50%","custom_width":"750px","custom_height_auto":true,"custom_height":"350px","scrollable_content":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center","position_top":"100","position_bottom":"100","position_left":"0","position_right":"0","position_from_trigger":false,"position_fixed":true,"overlay_disabled":true,"stackable":false,"disable_reposition":false,"zindex":"1999999999","close_button_delay":"0","fi_promotion":null,"close_on_form_submission":false,"close_on_form_submission_delay":"0","close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"enterprise-blue","id":6884,"slug":"lets-login"}}; </script> <script src="//learnnear.club/wp-content/uploads/pum/pum-site-scripts.js?defer&generated=1751714692&ver=1.20.5" id="popup-maker-site-js"></script> <script src="https://learnnear.club/wp-content/plugins/popup-maker/assets/js/vendor/mobile-detect.min.js?ver=1.3.3" id="mobile-detect-js"></script> <script src="https://learnnear.club/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=ezZdI1mvdWcTEd4" id="enlighterjs-js"></script> <script id="mycred-socialshare-link-points-js-extra"> var myCREDsocial = {"ajaxurl":"https:\/\/learnnear.club\/wp-admin\/admin-ajax.php","token":"87ffc8c6b5"}; </script> <script src="https://learnnear.club/wp-content/plugins/mycred-social-shares/assets/js/share-links.js?ver=6.8.2" id="mycred-socialshare-link-points-js"></script> <script src="https://learnnear.club/wp-content/plugins/mycred-social-shares/assets/js/more-button.js?ver=6.8.2" id="mycred-socialshare-hide-js"></script> <script src="https://learnnear.club/wp-content/plugins/TBReferrals/public/refs.4a8df4c788290af8d2d3.js?ver=0.0.2" id="TBReferralsref-js"></script> <script> /(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1); </script> <div id="near-ai-chat"></div> <script> jQuery(document).ready(() => { setTimeout(() => { if (!window.location.href.includes('lnc-chat-bot-connect')) { window.initFlowerWrapper( 'near-ai-chat', ) } }, 200) }) </script> <!--<div id="bug-eye-bookmark" style="display: block; text-align: center; border: 1px solid; ">--> <!-- <a target="_blank" style="font-size: 16px; flex: 1; text-decoration: none;" href="/bugeye-submit/?project=1">--> <!-- <div style="display: flex; flex-direction: column;">--> <!-- <span style="font-size: 16px; flex: 1;">Report a bug👀</span>--> <!-- </div>--> <!-- </a>--> <!--</div>--> <style> li.comment { border-bottom: 1px solid #eaeaea !important; } ol.children li.comment { border: 0 !important; } ol.children { margin-top: -4% !important; } .ast-comment-list .ast-comment + ol.children { bottom: 0 !important; } .ast-comment-list li.depth-1 .ast-comment, .ast-comment-list li.depth-2 .ast-comment { border-bottom: 0 !important; } #bug-eye-bookmark { position: fixed; top: 50%; right: 2%; transform: translate(50%, -50%) rotate(180deg); writing-mode: vertical-rl; padding: 5px 10px; border: 1px solid black; z-index: 9999; } @media (max-width: 768px) { #bug-eye-bookmark { display: none !important; right: 8%; padding: 3px 6px; font-size: 12px; } } .top-tabs-switcher { display: block; text-align: right; margin-right: 19%; padding-bottom: 20px; } .ecosystem-top-selection .top-section-content { padding-right: 0; } .ecosystem-top-selection .top-section-content-right { padding-right: 19%; } @media (max-width: 768px) { .ecosystem-top-selection .top-section-content > * > * { padding: 8px 0 0; } .ecosystem-top-selection .top-section-content article span:empty { display: none; } .top-tabs-switcher { margin: 0 auto; text-align: center; } } .top-tabs-switcher > span { padding-right: 8px; } .top-tabs-switcher > span > .button { display: inline-block; /* Ensure the spans are treated as blocks for centering */ cursor: pointer; padding: 4px 5px 4px; } .pum-theme-6877 .pum-title, .pum-theme-enterprise-blue .pum-title { text-align: center !important; } .wp-block-button__link { height: fit-content !important; width: fit-content !important; } </style> </body> </html> <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:'98547b031ff9ff5a',t:'MTc1ODkwNzczNQ=='};var a=document.createElement('script');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><script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="7dba5d88bbdba8a40ba1b6b0-|49" defer></script>