Vibecoding On‑Chain — AI를 사용해 Solidity 계약을 안전하게 프로토타입하기

발행: (2026년 1월 8일 오후 03:01 GMT+9)
11 min read
원문: Dev.to

Source: Dev.to

나는 Remix를 열고 빈 Solidity 파일을 바라보며 멍해졌다. 어디서부터 시작해야 할지 전혀 감이 잡히지 않았다. 그래서 모두가 말하듯 “코드를 더 많이 써라”는 말을 따라했다. 튜토리얼에서 패턴을 복사하고 몇 줄을 수정한 뒤 Deploy 버튼을 눌렀다…

그럼에도 불구하고 스마트 계약이 실제로 어떻게 동작하는지 배우고 있다는 느낌은 들지 않았다.

이상한 점은?

  • 연습이 부족해서가 아니다.
  • 어떻게 연습했는지가 문제였다.

어느 날 나는 다른 방식을 시도해 보았다:

  • 처음부터 시작하는 것을 멈추고 AI와 함께 **“vibecoding”**을 시작했다.
  • 부정행위가 아니라, AI를 대략적인 스케치 아티스트로, 나를 편집자로 대했을 때 어떤 일이 일어날지 보기 위해서였다.

그 실험이 오늘의 글이 되었다.

이 글은 60일 Web3 여정의 28일 차이며, 아직 Phase 3: Development 단계에 있다.
오늘의 목표는 “vibecoding”이 무엇인지, AI 도구를 사용해 Solidity 계약을 스캐폴딩하는 방법, 그리고 그 코드를 검토하고 강화해 실제로 안전하게 배포할 수 있게 만드는 방법을 이해하는 것이다.

Web3에서 “vibecoding”이란?

Vibecoding은 빈 파일 대신 분위기와 프롬프트를 기반으로 코드를 만드는 아이디어입니다. 원하는 내용을 자연어로 설명하면 AI 도구가 코드 초안을 생성해 줍니다.

Web3에서는 AI를 활용해 Solidity 계약, 테스트 케이스, 혹은 전체 dApp 스켈레톤을 빠르게 스캐폴딩함으로써 아이디어를 훨씬 빠르게 반복할 수 있습니다.

사고 방식의 전환

기존 접근 방식Vibecoding 접근 방식
“VS Code를 열고 → 빈 파일을 바라보며 → 컴파일러와 싸운다.”“계약을 상세히 설명 → 첫 번째 초안을 받음 → 검토하고, 수정하고, 개선한다.”

AI는 보일러플레이트 작업을 담당하는 협업 파트너가 되며, 여러분은 아키텍처, 안전성, 제품 사고를 주도합니다.

기본을 마친 후 vibecoding이 완벽한 이유 after the basics

지난 이틀 동안 여러분은:

  • Solidity 구문, 변수, 함수, 그리고 계약이 상태를 노출하는 방식을 배웠습니다.
  • Web3 Journey Logger를 배열, 매핑, 구조체, 이벤트로 업그레이드하여 여러 엔트리와 여러 사용자를 처리했습니다.

이제 vibecoding을 통해 할 수 있는 것:

  • 그 지식을 더 나은 프롬프트로 전환합니다 (예: “write an NFT for me” 대신 “구조체와 함께 mapping(address => Entry[]) 사용”).
  • AI를 파트너로 활용합니다: AI가 보일러플레이트 코드를 작성하고, 여러분은 리뷰, 불변 조건, 엣지 케이스를 처리합니다.
  • Solidity를 읽고 비판하는 연습을 합니다—DevRel, 감사, 혹은 기술 콘텐츠에 가장 중요한 스킬 중 하나입니다.

학습을 건너뛰는 것이 아니라, AI를 사용해 반복 작업을 없애고 코드가 실제로 무엇을 하는지 이해하는 데 더 많은 시간을 할애할 수 있습니다.

Source:

계약을 위한 AI 프롬프트 작성 방법

좋은 vibecoding은 좋은 프롬프트에서 시작됩니다. “스테이킹 계약을 작성해줘” 같은 모호한 요청은 이상하고 안전하지 않은 코드를 만들 위험이 있습니다.

탄탄한 프롬프트는 보통 다음을 포함합니다:

  1. 계약의 목표를 설명한다.
  2. 데이터 모델(struct, mapping, 배열)을 명시한다.
  3. 이벤트접근 제어를 언급한다.
  4. Solidity 버전을 명시한다.

예시 프롬프트

“Solidity 0.8.x 계약 StudyBuddy를 작성해 주세요.
– 사용자는 topic(string)과 minutes(uint256)를 포함한 학습 세션을 기록할 수 있어야 합니다.
– 각 사용자는 여러 세션을 기록할 수 있어야 합니다.
struct Session { string topic; uint256 minutes; }mapping(address => Session[])를 사용합니다.
– 새로운 세션이 기록될 때마다 이벤트를 발생시킵니다.
– 사용자의 전체 세션 수와 인덱스로 특정 세션을 조회할 수 있는 view 함수를 포함합니다.
tx.origin 사용을 피하고, SPDX 라이선스 선언과 최신 0.8 컴파일러 pragma를 사용합니다.”

이 프롬프트는 이미 익숙한 Journey Logger V2 패턴을 다른 상황에 적용하도록 AI를 유도합니다.

예시: StudyBuddy 계약을 vibecoding하기

위 프롬프트를 AI 도구에 입력했다고 가정합니다. 합리적인 출력은 다음과 같을 수 있습니다:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract StudyBuddy {
    struct Session {
        string topic;
        uint256 minutes;
    }

    mapping(address => Session[]) private sessionsByUser;

    event SessionLogged(
        address indexed user,
        string topic,
        uint256 minutes,
        uint256 index
    );

    function logSession(string calldata _topic, uint256 _minutes) external {
        Session memory newSession = Session({topic: _topic, minutes: _minutes});
        sessionsByUser[msg.sender].push(newSession);

        uint256 index = sessionsByUser[msg.sender].length - 1;
        emit SessionLogged(msg.sender, _topic, _minutes, index);
    }

    function getSession(address _user, uint256 _index)
        external
        view
        returns (string memory topic, uint256 minutes)
    {
        require(_index < sessionsByUser[_user].length, "Index out of bounds");
        Session storage s = sessionsByUser[_user][_index];
        return (s.topic, s.minutes);
    }
}

Note: AI가 어디에서도 본 적 없는 무언가를 만들어낸다면 의심하고 검토하십시오. 왜 그런 선택을 했는지 물어보거나, 명시적으로 알려진 패턴을 따르도록 프롬프트하십시오.

Rule 3: 테스트 추가 및 수동 검토

작은 데모 계약이라도 다음을 목표로 합니다:

Unit tests (or Foundry/Hardhat tests) that

  • 각 함수를 일반적인 입력으로 호출합니다.
  • 경계값을 시도합니다(인덱스 범위 초과, 0값, 최대값).
  • 이벤트가 올바르게 발생하는지 확인합니다.

Manual reasoning about

  • 누가 각 함수를 호출할 수 있으며 무엇을 변경할 수 있는지.
  • 데이터가 시간이 지남에 따라 어떻게 증가하는지(누군가 스토리지를 스팸할 수 있는가?).
  • 숨겨진 가정이 있는지 여부(예: “한 사용자는 몇 개의 세션만 가질 것이다”).

AI는 초안 코드와 초안 테스트를 생성하는 데 뛰어나지만, 행동과 위험을 이해하는 책임은 인간에게 있습니다.

Source:

Vibecoding이 학습자와 미래 DevRel에게 어떻게 도움이 되는가

DevRel이나 기술 교육을 목표로 하는 사람에게 vibecoding은 슈퍼 파워입니다:

  • 튜토리얼을 더 빠르게 프로토타입: 데모 계약을 생성하고, 이를 검토·수정하는 과정을 콘텐츠로 전환합니다.
  • 디버깅 AI가 Solidity 사고 모델을 날카롭게 함: 잡아낸 실수마다 이해도가 향상됩니다.
  • 초보자에 대한 공감 능력 강화: 많은 새로운 개발자들이 AI에 크게 의존하게 될 것이며, 여러분의 역할은 무조건 신뢰하게 하는 대신 안전하게 활용하는 방법을 보여주는 것입니다.

재사용 가능한 콘텐츠 패턴

  1. 순수 영어 아이디어에서 시작합니다 (예: “X를 온‑체인에서 추적하고 싶다”).
  2. AI에게 계약을 생성하도록 프롬프트합니다.
  3. 기사나 영상에서 코드를 하나씩 살펴보며 강조합니다:
    • 좋은 점
    • 부족한 점
    • 배포 전에 수정한 부분
  4. 개선된 버전을 테스트넷에 배포하고, 독자에게 확장 과제를 제시합니다.

이 과정을 통해 “Solidity를 작성하는 사람”이 아니라, AI‑보조 방식으로 개발하는 새로운 방법을 다른 사람들이 탐색하도록 돕는 가이드로 자리매김할 수 있습니다.

추가 읽을거리

시리즈를 팔로우하세요:

텔레그램에서 대화에 참여하세요: Web3ForHumans – 함께 Web3를 브레인스토밍합니다.

Back to Blog

관련 글

더 보기 »

Backrooms 탈출

Escape the Backrooms는 Fancy Games가 개발하고 Secret Mode가 퍼블리싱한 1인칭 호러 어드벤처 게임입니다. 28개가 넘는 주요 플레이 가능한 레벨을 특징으로 합니다, va...