{
"name": "TypeScript 스마트 계약 101",
"slug": "typescript-smart-contract-101",
"community": "icp",
"summary": "이 강좌는 TypeScript를 사용하여 인터넷 컴퓨터 프로토콜(ICP) 플랫폼에서 개발하는 방법에 대한 소개를 제공합니다. ICP에서 스마트 계약을 구축하고 상호 작용하는 기본 사항을 배울 수 있습니다.",
"description": "이 강좌는 TypeScript를 사용하여 인터넷 컴퓨터 프로토콜(ICP) 플랫폼에서 개발하는 방법에 대한 소개를 제공합니다. ICP에서 스마트 계약을 구축하고 상호 작용하는 기본 사항을 배울 수 있습니다.",
"duration": 6000000,
"introduction": {
"text": "ICP Azle 개발 101 강좌에 오신 것을 환영합니다! 우리는 인터넷 컴퓨터 프로토콜(ICP) 플랫폼과 Azle, 분산 애플리케이션을 구축하기 위한 JavaScript 프레임워크에 대한 소개를 다룰 것입니다. 개발 환경을 설정하고 CRUD 작업을 수행하는 간단한 메시징 캐니스터를 구축하는 방법을 배울 수 있습니다."
},
"objectives": [
"ICP 플랫폼의 독특한 기능을 이해하고 다른 블록체인 플랫폼과 어떻게 다른지 알 수 있습니다.",
"ICP 플랫폼에서 분산 애플리케이션을 구축하기 위한 개발 환경을 설정할 수 있습니다.",
"CRUD 작업을 수행하는 TypeScript에서 메시징 스마트 계약(캐니스터)을 구축하고 상호 작용할 수 있습니다."
],
"prerequisite": {
"items": [
"TypeScript와 Node.js에 대한 지식이 있어야 합니다.",
"텍스트 편집기가 있어야 하며, TypeScript와 Node.js 개발에 대한 훌륭한 지원 때문에 Visual Studio Code를 선호합니다.",
"터미널과 명령 줄 인터페이스에 익숙해야 합니다."
]
},
"level": 0,
"locale": "kr"
}
Learning module 1
{
"community": "icp",
"course": "typescript-smart-contract-101",
"title": "인터넷 컴퓨터 소개",
"description": "이 매우 짧은 학습 모듈에서는 ICP 플랫폼을 이해하는 데 필요한 필수 자료를 제공합니다.",
"duration": 1494000,
"objectives": [
"인터넷 컴퓨터의 사명과 비전에 대해 배웁니다.",
"인터넷 컴퓨터의 가장 중요한 기술 개념을 알아봅니다.",
"인터넷 컴퓨터의 캐니스터 스마트 계약에 대한 소개를 받습니다."
],
"materials": [
{
"link": "https://www.youtube.com/embed/2jKSpqvECds",
"duration": 304800,
"type": "EMBEDDED-VIDEO",
"description": "이 비디오는 인터넷 컴퓨터에 대한 빠른 소개를 제공합니다: 그 역사, 사명, 그리고 독특한 기능성.",
"title": "인터넷 컴퓨터란 무엇인가요?",
"subtitle": "Dfinity ICP의 Youtube 비디오"
},
{
"link": "https://internetcomputer.org/how-it-works",
"duration": 1080000,
"type": "ARTICLE",
"description": "이 기사는 인터넷 컴퓨터의 아키텍처와 기능에 대한 자세한 개요를 제공합니다.",
"title": "ICP는 어떻게 작동하나요?",
"subtitle": "ICP의 기사"
},
{
"link": "https://www.youtube.com/watch?v=c5nv6vIG3OQ",
"duration": 1221000,
"type": "EMBEDDED-VIDEO",
"description": "이 비디오는 ICP 캐니스터 스마트 계약과 그들의 독특한 기능에 대한 소개를 제공합니다.",
"title": "캐니스터는 어떻게 작동하나요?",
"subtitle": "Dfinity ICP의 Youtube 비디오"
}
],
"order": 0
}
Learning module 2
{
"community": "icp",
"course": "typescript-smart-contract-101",
"title": "인터넷 컴퓨터에서 스마트 계약 설정, 구축 및 상호 작용",
"description": "이 모듈에서는 개발 환경을 설정하고, ICP 플랫폼에서 TypeScript (Azle) 프로젝트의 보일러플레이트 코드를 이해하며, CRUD 작업을 수행하는 간단한 메시징 스마트 계약(캐니스터)을 구축하고 상호 작용하는 방법을 가르칩니다.",
"duration": 6000000,
"objectives": [
"Node.js, Node 버전 관리자(nvm), DFX를 사용하여 개발 환경을 설정합니다.",
"TypeScript (Azle) 프로젝트를 시작하는 데 필요한 필수 파일과 구성을 이해합니다.",
"CRUD 작업을 수행하는 메시징 스마트 계약(캐니스터)을 구축하고 상호 작용하는 방법을 배웁니다."
],
"materials": [
{
"link": "https://raw.githubusercontent.com/dacadeorg/tutorials/main/ICP/typescript-smart-contract-101/content/typescript-smart-contract-101-kr.md",
"duration": 6000000,
"type": "MARKDOWN"
}
],
"order": 1
}
Challenge
{
"community": "icp",
"name": "TypeScript 스마트 계약 101",
"courses": ["typescript-smart-contract-101"],
"format": {
"githubLink": true,
"text": true
},
"threshold": 70,
"reviewTime": 10080,
"hint": "다른 사용 사례에 대한 아이디어가 필요하면 우리의 <a href='https://discord.com/invite/Y7mKPujuck'>디스코드 서버</a>에서 질문하세요.",
"ratingCriteria": [
{
"name": "독창성",
"rubric": [
{
"points": 0,
"text": "귀하의 캐니스터에는 원래성이 없으며, 예시와 동일한 캐니스터 코드를 사용하거나 이름이나 변수만 변경했습니다."
},
{
"points": 20,
"text": "기존의 아이디어나 개념에 일부 수정을 했지만, 코드에는 제한된 원래성이 있습니다."
},
{
"points": 40,
"text": "학습 자료에 있는 것과 매우 다른 독특한 기능을 캐니스터 코드에 추가했지만 귀하의 필요에 맞습니다."
},
{
"points": 60,
"text": "학습 모듈이나 동료들이 제시한 것과 매우 다른 새로운 여러 기능을 만들었습니다."
}
]
},
{
"name": "품질",
"rubric": [
{
"points": 0,
"text": "귀하의 캐니스터 코드에는 치명적인 버그가 있거나 제대로 작동하지 않습니다."
},
{
"points": 10,
"text": "귀하의 캐니스터 코드에는 성능이나 사용성을 향상시키기 위해 처리해야 할 일부 작은 버그나 기능적 문제가 있습니다."
},
{
"points": 30,
"text": "귀하의 캐니스터 코드는 잘 구조화되어 있고, 모범 사례를 따르며, 최소한의 문제로 좋은 코딩 실무를 보여줍니다."
},
{
"points": 40,
"text": "귀하의 캐니스터 코드는 훌륭하며, 우수한 조직, 효율성, 모범 사례 및 철저한 문서화 등을 보여줍니다. 버그나 문제가 없습니다."
}
]
}
],
"feedbackInfo": [
{
"name": "해야 할 것",
"positive": true,
"criteria": [
"캐니스터를 어떻게 개선할 수 있는지 설명하십시오. 가능하다면, GitHub에 pull request를 생성하세요. (가장 중요)",
"코드나 설명의 기술적인 문제를 명시하고, 이를 어떻게 해결할 수 있는지 설명하십시오. 가능하다면, GitHub에 pull request를 생성하세요. (중요)",
"관련이 있다면, 내용을 어떻게 개선할 수 있는지 설명하십시오. (중요하지 않음)"
]
},
{
"name": "하지 말아야 할 것",
"positive": false,
"criteria": [
"제출물의 품질을 평가하지 마십시오.",
"이것이 캐니스터에 대한 좋은 주제인지 논쟁하지 마십시오."
]
}
],
"description": "유니크한 코드나 완전히 다른 사용 사례를 가진 자신만의 캐니스터를 만드십시오. 전체 애플리케이션 또는 프로젝트가 아닌 캐니스터 코드만 필요합니다.",
"objectives": [
"유니크한 캐니스터를 개발하십시오. 캐니스터는 기존의 개념이나 아이디어를 복제해서는 안됩니다.",
"귀하의 캐니스터 코드가 고품질이어야 합니다. 이는 잘 구조화되어 있고, 효율적이며, 모범 사례를 따르며, 철저하게 문서화되어 있어야 합니다. 버그나 문제가 없어야 합니다.",
"GitHub에 귀하의 캐니스터 코드를 게시하고 GitHub 저장소 링크를 제출하십시오. 예를 들면, https://github.com/your-username/unique-icp-canister와 같이 제출해야 합니다. 캐니스터를 배포하고 테스트하는데 필요한 모든 지침도 포함해야 합니다."
],
"rewards": [
{
"amount": 2,
"token": "ICP",
"type": "SUBMISSION",
"stable": true
},
{
"amount": 1,
"token": "ICP",
"type": "FEEDBACK",
"stable": true
}
],
"certificateData": {
"icon": "https://dacade.org/img/certificates/icp-canister-development-101.svg",
"narrative": "이 성과를 얻은 사람은 인터넷 컴퓨터 프로토콜을 위한 독특하고 잘 코딩된 캐니스터를 만드는 데에 뛰어난 기술을 보였습니다."
}
}