System Contract
vote_producer.iost
설명
슈퍼 노드의 투표 캠페인 컨트랙트입니다.
정보
| contract_id | vote_producer.iost |
|---|---|
| language | javascript |
| version | 1.0.6 |
API
applyRegister(applicant, pubkey, location, url, netid, isProducer)
노드 후보 등록 신청을 합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| applicant | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
| pubkey | string | 노드 공개키, base58 인코딩. 해당 공개키에 대응하는 비밀키는 블록 생성자 노드가 블록 서명에 사용합니다. 파트너 노드의 경우 임의의 값을 전달해도 됩니다. |
| location | string | 팀의 위치 |
| url | string | 팀 홈페이지 |
| netid | string | 블록 생성자 노드의 네트워크 ID. 파트너 노드는 이 파라미터를 전달할 필요가 없습니다. |
| isProducer | bool | 블록 생성자 노드 여부 |
applyUnregister(applicant)
등록 취소를 신청합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| applicant | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
unregister(applicant)
등록을 취소합니다. 승인된 생성자 노드라면 먼저 ApplyUnregister를 호출하고, 심사 통과 후 이 인터페이스를 호출해야 합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| applicant | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
updateProducer(account, pubkey, location, url, netid)
등록 정보를 업데이트합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| applicant | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
| pubkey | string | 노드 공개키, base58 인코딩. 해당 공개키에 대응하는 비밀키는 블록 생성자 노드가 블록 서명에 사용합니다. 파트너 노드의 경우 임의의 값을 전달해도 됩니다. |
| location | string | 팀의 위치 |
| url | string | 팀 홈페이지 |
| netid | string | 블록 생성자 노드의 네트워크 ID. 파트너 노드는 이 파라미터를 전달할 필요가 없습니다. |
logInProducer(account)
온라인 전환, 노드가 현재 서비스 가능 상태임을 나타냅니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
logOutProducer(account)
오프라인 전환, 노드가 현재 서비스 불가 상태임을 나타냅니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다. |
vote(voter, nodeAccount, amount)
노드에 투표합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voter | string | 투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| nodeAccount | string | 노드 계정명. |
| amount | string | 투표 수량 |
unvote(voter, nodeAccount, amount)
투표를 취소합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voter | string | 투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| nodeAccount | string | 노드 계정명. |
| amount | string | 투표 수량 |
voterWithdraw(voter)
투표자가 보너스 보상을 수령합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voter | string | 투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "operate" 권한이 필요합니다. |
candidateWithdraw(candidate)
후보자가 보너스 보상을 수령합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| candidate | string | 후보자 계정명. 이 인터페이스 호출에는 해당 계정의 "operate" 권한이 필요합니다. |
getVoterBonus(voter)
투표자가 수령 가능한 보너스 보상을 계산합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voter | string | 투표자 계정명. |
getCandidateBonus(candidate)
후보자가 수령 가능한 보너스 보상을 계산합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| candidate | string | 후보자 계정명. |
topupCandidateBonus(amount, payer)
후보자 보너스 풀에 iost를 충전합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| amount | string | 충전 금액. |
| payer | string | 결제 계정명. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다. |
topupVoterBonus(candidate, amount, payer)
투표자 보너스 풀에 iost를 충전합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| candidate | string | 후보자 계정명. |
| amount | string | 충전 금액. |
| payer | string | 결제 계정명. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다. |
vote.iost
설명
범용 투표 컨트랙트로, 투표 생성·집계·통계에 사용합니다. 이 컨트랙트를 기반으로 자체 투표 기능을 구현할 수 있습니다.
정보
| contract_id | vote.iost |
|---|---|
| language | javascript |
| version | 1.0.1 |
API
newVote(owner, description, config)
투표를 생성합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| owner | string | 투표 생성자 계정명. 투표 생성에는 1000 IOST 스테이킹이 필요하며, 생성자 계정에서 차감됩니다. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다. |
| description | string | 투표 설명 |
| config | json object | 투표 설정. 여섯 개의 키를 포함합니다. resultNumber —— number 타입, 투표 결과 수, 최대 2000; minVote —— number 타입, 최소 득표 수, 이보다 많은 표를 얻은 후보만 결과 집합에 진입할 수 있습니다; options —— array 타입, 후보 집합. 각 항목은 문자열로 한 후보를 의미합니다. 초기값은 빈 배열 []일 수 있습니다; anyOption —— bool 타입, options 집합에 없는 후보를 허용할지 여부. false면 사용자가 options 집합 내의 후보에게만 투표할 수 있습니다; freezeTime —— number 타입, 토큰 동결 해제 시간(초); canVote —— bool 타입, 생성자 외 사용자도 투표할 수 있는지 여부 |
| 호출이 성공하면 전역적으로 유일한 vote ID를 반환합니다. |
setCanVote(voteID, canVote)
생성자 외 사용자도 투표할 수 있는지 여부를 설정합니다.
이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| canVote | bool | 생성자 외 사용자도 투표할 수 있는지 여부 |
addOption(voteID, option, clearVotes)
투표 선택지를 추가합니다.
이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| option | string | 선택지 |
| clearVotes | bool | 이전 득표 수를 0으로 초기화할지 여부 |
removeOption(voteID, option, forceDelete)
투표 선택지를 삭제하지만 득표 결과는 보존합니다. 삭제 후 AddOption으로 다시 추가하면 득표 수 복원 여부를 선택할 수 있습니다.
이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| option | string | 선택지 |
| forceDelete | bool | 강제 삭제 여부. false는 결과 집합에 포함된 항목은 삭제하지 않음을, true는 강제 삭제 후 결과 집합도 갱신함을 의미합니다. |
getOption(voteID, option)
후보의 득표 수를 조회합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| option | string | 선택지 |
결과는 json 객체입니다.
| key | type | 비고 |
|---|---|---|
| votes | string | 득표 수 |
| deleted | bool | 삭제 마킹 여부 |
| clearTime | number | 득표 수가 마지막으로 초기화된 블록 번호 |
voteFor(voteID, payer, voter, option, amount)
다른 사람을 대신해 투표합니다. 투표 스테이킹 IOST는 대리 계정에서 차감됩니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| payer | string | 대리 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| voter | string | 투표자 계정명 |
| option | string | 선택지 |
| amount | string | 투표 수량 |
vote(voteID, voter, option, amount)
투표합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| voter | string | 투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| option | string | 선택지 |
| amount | string | 투표 수량 |
unvote(voteID, voter, option, amount)
투표를 취소합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| voter | string | 투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| option | string | 선택지 |
| amount | string | 투표 수량 |
getVote(voteID, voter)
특정 계정의 투표 기록을 조회합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
| voter | string | 투표자 계정명 |
결과는 json 배열이며, 각 항목은 다음과 같은 객체입니다.
| key | type | 비고 |
|---|---|---|
| option | string | 선택지 |
| votes | string | 득표 수 |
| voteTime | number | 마지막 투표 블록 번호 |
| clearedVotes | string | 초기화된 득표 수 |
getResult(voteID)
투표 결과를 조회합니다. 득표 수 상위 resultNumber개의 선택지를 반환합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
결과는 json 배열이며, 각 항목은 다음과 같은 객체입니다.
| key | type | 비고 |
|---|---|---|
| option | string | 선택지 |
| votes | string | 득표 수 |
delVote(voteID)
투표를 삭제하고, 투표 생성 시 스테이킹한 iost를 생성자 계정으로 반환합니다.
이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| voteID | string | NewVote 인터페이스가 반환한 ID |
auth.iost
설명
계정 시스템 및 권한 관리
정보
| contract_id | auth.iost |
|---|---|
| language | javascript |
| version | 1.0.0 |
API
signUp(accountName, ownerKey, activeKey)
계정을 생성합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| accountName | string | 계정명. 길이는 5~11자, 문자는 [a-z0-9_]만 사용 가능 |
| ownerKey | string | owner 권한의 공개키, base58 인코딩 |
| activeKey | string | active 권한의 공개키, base58 인코딩 |
addPermission(account, permission, weight)
계정에 권한을 추가합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
| weight | number | 권한 임계값 |
dropPermission(account, permission)
권한을 삭제합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
assignPermission(account, permission, item, weight)
항목에 권한을 할당합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
| item | string | 권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음 |
| Weight | number | 권한 가중치 |
revokePermission(account, permission, item)
권한을 회수합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
| item | string | 권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음 |
addGroup(account, group)
권한 그룹을 추가합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| group | string | 그룹 이름 |
dropGroup(account, group)
권한 그룹을 삭제합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| group | string | 그룹 이름 |
assignGroup(account, group, item, weight)
권한 그룹에 항목을 할당합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| group | string | 그룹 이름 |
| item | string | 권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음 |
| Weight | number | 권한 가중치 |
revokeGroup(account, group, item)
권한 그룹에서 항목을 회수합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| group | string | 그룹 이름 |
| item | string | 권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음 |
assignPermissionToGroup(account, permission, group)
그룹에 권한을 추가합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
| group | string | 그룹 이름 |
revokePermissionInGroup(account, permission, group)
그룹에서 권한을 삭제합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다. |
| permission | string | 권한 이름 |
| group | string | 그룹 이름 |
bonus.iost
설명
블록 생성 보상을 송수신하기 위한 스마트 컨트랙트입니다.
정보
| contract_id | bonus.iost |
|---|---|
| language | javascript |
| version | 1.0.2 |
API
exchangeIOST(account, amount)
기여값을 iost로 교환합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| account | string | 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다. |
| amount | string | 교환할 iost 수량. "0"은 전체를 의미합니다. |
system.iost
설명
컨트랙트 배포·업데이트 및 기타 기본 시스템 기능을 위한 베이스 시스템 컨트랙트입니다.
정보
| contract_id | system.iost |
|---|---|
| language | native |
| version | 1.0.0 |
API
setCode(code)
스마트 컨트랙트를 배포합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| code | string | 스마트 컨트랙트 코드 |
| 반환값 | 반환 타입 |
|---|---|
| contractID | string |
스마트 컨트랙트 코드는 코드 본문과 언어·인터페이스 정의 등의 컨트랙트 정보를 포함합니다. code 파라미터는 json 형식과 protobuf 직렬화 인코딩 형식 두 가지를 지원합니다. 일반적으로 컨트랙트를 배포할 때는 이 인터페이스를 직접 호출할 필요가 없습니다. iwallet 또는 관련 언어 SDK 구현을 사용하는 것을 권장합니다.
스마트 컨트랙트 배포 시 시스템은 컨트랙트의 init() 함수를 자동으로 호출합니다. 개발자는 init 함수에서 초기화 작업을 수행할 수 있습니다.
반환값 contractID는 스마트 컨트랙트 ID로, 배포 트랜잭션의 해시로 생성되어 전역적으로 유일합니다. contractID는 "Contract"로 시작하며 대소문자와 숫자로 구성됩니다. 한 트랜잭션에서 하나의 스마트 컨트랙트만 배포할 수 있습니다.
updateCode(code, data)
스마트 컨트랙트를 업그레이드합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| code | string | 스마트 컨트랙트 코드 |
| data | string | 업그레이드 함수 인자 |
스마트 컨트랙트를 업그레이드합니다. code는 스마트 컨트랙트 코드이며 형식은 setCode의 파라미터와 동일합니다.
스마트 컨트랙트 업그레이드 시 시스템은 업그레이드 권한, 즉 컨트랙트 내 can_update(data) 함수를 자동으로 검사합니다. data 파라미터는 updateCode의 두 번째 인자입니다. can_update 함수가 존재하고 그 호출이 true를 반환하는 경우에만 컨트랙트 업그레이드가 성공합니다. 그렇지 않으면 업그레이드는 실패하며 업그레이드 권한이 없는 것으로 간주됩니다.
cancelDelaytx(txHash)
지연 트랜잭션을 취소합니다. 지연 트랜잭션이 실행되기 전에 이 함수를 호출해 취소할 수 있습니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| txHash | string | 트랜잭션 해시 |
requireAuth(acc, permission)
트랜잭션이 해당 계정의 권한을 가지고 있는지 확인합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| acc | string | 계정명 |
| permission | string | 권한 이름 |
| 반환값 | 타입 |
|---|---|
| ok | bool |
receipt(data)
트랜잭션 영수증을 생성합니다. 영수증은 블록에 저장되며 트랜잭션 해시로 조회할 수 있습니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| data | string | 영수증 내용 |
exchange.iost
설명
주로 계정 생성과 그 계정으로의 송금에 사용되며, 기존 계정으로의 송금에도 사용할 수 있습니다.
정보
| contract_id | exchange.iost |
|---|---|
| language | javascript |
| version | 1.0.0 |
API
transfer(tokenSym, to, amount, memo)
계정을 생성하고 송금합니다.
| 파라미터 | 타입 | 비고 |
|---|---|---|
| tokenSym | string | 토큰 심볼 |
| to | string | 토큰을 수령할 계정. 계정을 생성하는 경우 빈 문자열로 설정 |
| amount | string | 송금 수량 |
| memo | string | 추가 정보. 계정을 생성하는 경우 create:{UserName}:{OwnerPublicKey}:{ActivePublicKey} 형식으로 설정 |
계정을 생성할 때 송금 수량은 최소 100 iost여야 합니다. 기본적으로 새로 생성된 계정에는 10 iost의 gas가 스테이킹되고 1K 바이트의 ram이 구매됩니다. 남은 금액은 새로 생성된 계정으로 송금됩니다.