일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- rust 기초
- 체인의정석
- 스마트컨트렉트 함수이름 중복 호출
- SBT표준
- 컨트렉트 배포 자동화
- 스마트컨트렉트프록시
- 프록시배포구조
- 러스트 기초 학습
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 예약어 함수이름 중복
- ambiguous function description
- 티스토리챌린지
- nest.js설명
- 스마트컨트렉트테스트
- multicall
- 컨트렉트 동일한 함수이름 호출
- Vue.js
- git rebase
- Vue
- ethers type
- ethers
- 오블완
- 러스트 기초
- 머신러닝기초
- 러스트기초
- vue기초
- ethers typescript
- chainlink 설명
- ethers v6
- ethers websocket
- Today
- Total
체인의정석
스마트컨트렉트를 포함한 로직의 PseudoCode 작성하기 본문
회사에서 특허에 대한 사항을 작성하기 위하여 Psudo code를 작성해 보았다.
지난학기 논문 작성 때도 Psudo Code를 작성해보려 했기 때문에 한번 이번 기회에 제대로 찾아보기로 하였다.
여기 글이 잘 되어 있는 것 같아서 참고하기로 하였다.
https://builtin.com/data-science/pseudocode
Psudo Code란? & 컨트렉트에서의 의사코드
데이터 과학이나 웹 개발에서 의사 코드는 기본적인 프로그래밍 지식을 가진 사람이라면 누구나 쉽게 이해할 수 있는 방식으로 알고리즘의 뚜렷한 단계를 설명하는 데 사용되는 기술이다.
스마트컨트렉트에서의 의사코드를 한번 살펴봤다.
https://medium.com/geekculture/smart-contracts-in-simple-words-and-pseudo-code-c53240d78c4a
Smart Contract gambling()
if(Team A wins)
pay Ether to Johnny
else
pay Ether to Rio
이런식인데 기본 규칙을 지킨것 같지는 않아서 좀 정석대로 바꿔야 되는걸로 보인다.
이 예시는 좀 괜찮아 보인다.
그렇지만 이렇게 까지 자세히 사용하는 것은 무리인거 같다.
1. 의사코드에서의 메인 요소들
- SEQUENCE represents linear tasks sequentially performed one after the other.
- WHILE a loop with a condition at its beginning.
- REPEAT-UNTIL a loop with a condition at the bottom.
- FOR another way of looping.
- IF-THEN-ELSE a conditional statement changing the flow of the algorithm.
- CASE the generalization form of IF-THEN-ELSE.
일단 모두 대문자로 써주는 것이 포인트이다.
1. 시퀀스 - 선형적인 작업들을 나타낸다
2. WHILE - 시작할때 넣어주는 loop 문
3. REPEAT-UNTIL - 조건이 만족될 때까지 반복
4. FOR - Looping에 대한 또다른 방법
5. IF-THEN-ELSE
6. CASE
일단 이런 단어들을 가져와서 상황에 맞게 써주여야 한다.
이 중 가장 크게 사용되는 명령어의 경우
1. call 키워드를 사용하여 클래스를 부르거나
2. EXCEPTION, WHEN 키워드를 사용하여 예외를 처리하는 부분
이렇게 2가지가 대부분이라고 한다.
=> 일단 컨트렉트에서 특정 함수를 부를 때 CALL 이라는 명령어를 붙이고 결과 값이 중요한 경우 RETURNING을 붙여주어야겠다.
2. 의사코드 쓰는법
HOW TO WRITE PSEUDOCODE
- Always capitalize the initial word (often one of the main six constructs).
- Make only one statement per line.
- Indent to show hierarchy, improve readability, and show nested constructs.
- Always end multi-line sections using any of the END keywords (ENDIF, ENDWHILE, etc.).
- Keep your statements programming language independent.
- Use the naming domain of the problem, not that of the implementation. For instance: “Append the last name to the first name” instead of “name = first+ last.”
- Keep it simple, concise and readable.
의사 코드 쓰는 법
1. 항상 첫 단어는 대문자로 써준다. (위의 주요 6개 명령어중 하나를 사용)
2. 한줄에 하나의 statement 만 정의한다.
3. 인덴트 잘하기
4. 라인이 여러개인 부분은 END/ENDIF/ENDWHILE 등의 키워드를 사용해서 모두 END 까지 작성해준다.
5. 프로그래밍 언어는 독립적으로 유지한다.
6. 구현 도메인이 아닌 문제의 명명 도메인을 사용합니다. 예를 들어, "name = first+last" 대신 "성을 이름에 추가합니다." 이런식으로 쓸 것
7. 간단하고 읽기쉽게 쓴다.
너무 코드처럼 쓰지 말고 오른쪽으로 사용해야 겠다.
예를들어 트랜잭션을 보내는 부분은 CALL 컨트렉트이름.함수이름(파라미터) 를 쓰고 결과가 나오면 END를 각각 써준다.
'개발' 카테고리의 다른 글
타입스크립트 린트 규칙관련 코드리뷰 정리 (0) | 2021.07.31 |
---|---|
주석 사용시 주의할 점 (0) | 2021.07.27 |
git commit 시 npm ERR! missing script: lint-staged (0) | 2021.07.26 |
git cli 주요 명령어 정리 (0) | 2021.07.26 |
typescript 커스텀 모듈 만들 시 발생가능한 에러사항 (0) | 2021.07.22 |