본문으로 건너뛰기
버전: 3.5.0

System Contract

vote_producer.iost


설명

슈퍼 노드의 투표 캠페인 컨트랙트입니다.

정보

contract_idvote_producer.iost
languagejavascript
version1.0.6

API

applyRegister(applicant, pubkey, location, url, netid, isProducer)

노드 후보 등록 신청을 합니다.

파라미터타입비고
applicantstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.
pubkeystring노드 공개키, base58 인코딩. 해당 공개키에 대응하는 비밀키는 블록 생성자 노드가 블록 서명에 사용합니다. 파트너 노드의 경우 임의의 값을 전달해도 됩니다.
locationstring팀의 위치
urlstring팀 홈페이지
netidstring블록 생성자 노드의 네트워크 ID. 파트너 노드는 이 파라미터를 전달할 필요가 없습니다.
isProducerbool블록 생성자 노드 여부

applyUnregister(applicant)

등록 취소를 신청합니다.

파라미터타입비고
applicantstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.

unregister(applicant)

등록을 취소합니다. 승인된 생성자 노드라면 먼저 ApplyUnregister를 호출하고, 심사 통과 후 이 인터페이스를 호출해야 합니다.

파라미터타입비고
applicantstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.

updateProducer(account, pubkey, location, url, netid)

등록 정보를 업데이트합니다.

파라미터타입비고
applicantstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.
pubkeystring노드 공개키, base58 인코딩. 해당 공개키에 대응하는 비밀키는 블록 생성자 노드가 블록 서명에 사용합니다. 파트너 노드의 경우 임의의 값을 전달해도 됩니다.
locationstring팀의 위치
urlstring팀 홈페이지
netidstring블록 생성자 노드의 네트워크 ID. 파트너 노드는 이 파라미터를 전달할 필요가 없습니다.

logInProducer(account)

온라인 전환, 노드가 현재 서비스 가능 상태임을 나타냅니다.

파라미터타입비고
accountstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.

logOutProducer(account)

오프라인 전환, 노드가 현재 서비스 불가 상태임을 나타냅니다.

파라미터타입비고
accountstring신청자 계정명. 이 인터페이스 호출에는 해당 계정의 "vote" 권한이 필요합니다.

vote(voter, nodeAccount, amount)

노드에 투표합니다.

파라미터타입비고
voterstring투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
nodeAccountstring노드 계정명.
amountstring투표 수량

unvote(voter, nodeAccount, amount)

투표를 취소합니다.

파라미터타입비고
voterstring투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
nodeAccountstring노드 계정명.
amountstring투표 수량

voterWithdraw(voter)

투표자가 보너스 보상을 수령합니다.

파라미터타입비고
voterstring투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "operate" 권한이 필요합니다.

candidateWithdraw(candidate)

후보자가 보너스 보상을 수령합니다.

파라미터타입비고
candidatestring후보자 계정명. 이 인터페이스 호출에는 해당 계정의 "operate" 권한이 필요합니다.

getVoterBonus(voter)

투표자가 수령 가능한 보너스 보상을 계산합니다.

파라미터타입비고
voterstring투표자 계정명.

getCandidateBonus(candidate)

후보자가 수령 가능한 보너스 보상을 계산합니다.

파라미터타입비고
candidatestring후보자 계정명.

topupCandidateBonus(amount, payer)

후보자 보너스 풀에 iost를 충전합니다.

파라미터타입비고
amountstring충전 금액.
payerstring결제 계정명. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다.

topupVoterBonus(candidate, amount, payer)

투표자 보너스 풀에 iost를 충전합니다.

파라미터타입비고
candidatestring후보자 계정명.
amountstring충전 금액.
payerstring결제 계정명. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다.

vote.iost


설명

범용 투표 컨트랙트로, 투표 생성·집계·통계에 사용합니다. 이 컨트랙트를 기반으로 자체 투표 기능을 구현할 수 있습니다.

정보

contract_idvote.iost
languagejavascript
version1.0.1

API

newVote(owner, description, config)

투표를 생성합니다.

파라미터타입비고
ownerstring투표 생성자 계정명. 투표 생성에는 1000 IOST 스테이킹이 필요하며, 생성자 계정에서 차감됩니다. 이 인터페이스 호출에는 해당 계정의 "transfer" 권한이 필요합니다.
descriptionstring투표 설명
configjson object투표 설정. 여섯 개의 키를 포함합니다.
resultNumber —— number 타입, 투표 결과 수, 최대 2000;
minVote —— number 타입, 최소 득표 수, 이보다 많은 표를 얻은 후보만 결과 집합에 진입할 수 있습니다;
options —— array 타입, 후보 집합. 각 항목은 문자열로 한 후보를 의미합니다. 초기값은 빈 배열 []일 수 있습니다;
anyOption —— bool 타입, options 집합에 없는 후보를 허용할지 여부. false면 사용자가 options 집합 내의 후보에게만 투표할 수 있습니다;
freezeTime —— number 타입, 토큰 동결 해제 시간(초);
canVote —— bool 타입, 생성자 외 사용자도 투표할 수 있는지 여부
호출이 성공하면 전역적으로 유일한 vote ID를 반환합니다.

setCanVote(voteID, canVote)

생성자 외 사용자도 투표할 수 있는지 여부를 설정합니다.

이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
canVotebool생성자 외 사용자도 투표할 수 있는지 여부

addOption(voteID, option, clearVotes)

투표 선택지를 추가합니다.

이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
optionstring선택지
clearVotesbool이전 득표 수를 0으로 초기화할지 여부

removeOption(voteID, option, forceDelete)

투표 선택지를 삭제하지만 득표 결과는 보존합니다. 삭제 후 AddOption으로 다시 추가하면 득표 수 복원 여부를 선택할 수 있습니다.

이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
optionstring선택지
forceDeletebool강제 삭제 여부. false는 결과 집합에 포함된 항목은 삭제하지 않음을, true는 강제 삭제 후 결과 집합도 갱신함을 의미합니다.

getOption(voteID, option)

후보의 득표 수를 조회합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
optionstring선택지

결과는 json 객체입니다.

keytype비고
votesstring득표 수
deletedbool삭제 마킹 여부
clearTimenumber득표 수가 마지막으로 초기화된 블록 번호

voteFor(voteID, payer, voter, option, amount)

다른 사람을 대신해 투표합니다. 투표 스테이킹 IOST는 대리 계정에서 차감됩니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
payerstring대리 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
voterstring투표자 계정명
optionstring선택지
amountstring투표 수량

vote(voteID, voter, option, amount)

투표합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
voterstring투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
optionstring선택지
amountstring투표 수량

unvote(voteID, voter, option, amount)

투표를 취소합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
voterstring투표자 계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
optionstring선택지
amountstring투표 수량

getVote(voteID, voter)

특정 계정의 투표 기록을 조회합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID
voterstring투표자 계정명

결과는 json 배열이며, 각 항목은 다음과 같은 객체입니다.

keytype비고
optionstring선택지
votesstring득표 수
voteTimenumber마지막 투표 블록 번호
clearedVotesstring초기화된 득표 수

getResult(voteID)

투표 결과를 조회합니다. 득표 수 상위 resultNumber개의 선택지를 반환합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID

결과는 json 배열이며, 각 항목은 다음과 같은 객체입니다.

keytype비고
optionstring선택지
votesstring득표 수

delVote(voteID)

투표를 삭제하고, 투표 생성 시 스테이킹한 iost를 생성자 계정으로 반환합니다.

이 인터페이스 호출에는 투표 생성자의 "active" 권한이 필요합니다.

파라미터타입비고
voteIDstringNewVote 인터페이스가 반환한 ID

auth.iost


설명

계정 시스템 및 권한 관리

정보

contract_idauth.iost
languagejavascript
version1.0.0

API

signUp(accountName, ownerKey, activeKey)

계정을 생성합니다.

파라미터타입비고
accountNamestring계정명. 길이는 5~11자, 문자는 [a-z0-9_]만 사용 가능
ownerKeystringowner 권한의 공개키, base58 인코딩
activeKeystringactive 권한의 공개키, base58 인코딩

addPermission(account, permission, weight)

계정에 권한을 추가합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름
weightnumber권한 임계값

dropPermission(account, permission)

권한을 삭제합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름

assignPermission(account, permission, item, weight)

항목에 권한을 할당합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름
itemstring권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음
Weightnumber권한 가중치

revokePermission(account, permission, item)

권한을 회수합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름
itemstring권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음

addGroup(account, group)

권한 그룹을 추가합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
groupstring그룹 이름

dropGroup(account, group)

권한 그룹을 삭제합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
groupstring그룹 이름

assignGroup(account, group, item, weight)

권한 그룹에 항목을 할당합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
groupstring그룹 이름
itemstring권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음
Weightnumber권한 가중치

revokeGroup(account, group, item)

권한 그룹에서 항목을 회수합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
groupstring그룹 이름
itemstring권한 소유자, 다른 계정의 공개키 또는 계정명일 수 있음

assignPermissionToGroup(account, permission, group)

그룹에 권한을 추가합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름
groupstring그룹 이름

revokePermissionInGroup(account, permission, group)

그룹에서 권한을 삭제합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "owner" 권한이 필요합니다.
permissionstring권한 이름
groupstring그룹 이름

bonus.iost


설명

블록 생성 보상을 송수신하기 위한 스마트 컨트랙트입니다.

정보

contract_idbonus.iost
languagejavascript
version1.0.2

API

exchangeIOST(account, amount)

기여값을 iost로 교환합니다.

파라미터타입비고
accountstring계정명. 이 인터페이스 호출에는 해당 계정의 "active" 권한이 필요합니다.
amountstring교환할 iost 수량. "0"은 전체를 의미합니다.

system.iost


설명

컨트랙트 배포·업데이트 및 기타 기본 시스템 기능을 위한 베이스 시스템 컨트랙트입니다.

정보

contract_idsystem.iost
languagenative
version1.0.0

API

setCode(code)

스마트 컨트랙트를 배포합니다.

파라미터타입비고
codestring스마트 컨트랙트 코드
반환값반환 타입
contractIDstring

스마트 컨트랙트 코드는 코드 본문과 언어·인터페이스 정의 등의 컨트랙트 정보를 포함합니다. code 파라미터는 json 형식과 protobuf 직렬화 인코딩 형식 두 가지를 지원합니다. 일반적으로 컨트랙트를 배포할 때는 이 인터페이스를 직접 호출할 필요가 없습니다. iwallet 또는 관련 언어 SDK 구현을 사용하는 것을 권장합니다.

스마트 컨트랙트 배포 시 시스템은 컨트랙트의 init() 함수를 자동으로 호출합니다. 개발자는 init 함수에서 초기화 작업을 수행할 수 있습니다.

반환값 contractID는 스마트 컨트랙트 ID로, 배포 트랜잭션의 해시로 생성되어 전역적으로 유일합니다. contractID는 "Contract"로 시작하며 대소문자와 숫자로 구성됩니다. 한 트랜잭션에서 하나의 스마트 컨트랙트만 배포할 수 있습니다.

updateCode(code, data)

스마트 컨트랙트를 업그레이드합니다.

파라미터타입비고
codestring스마트 컨트랙트 코드
datastring업그레이드 함수 인자

스마트 컨트랙트를 업그레이드합니다. code는 스마트 컨트랙트 코드이며 형식은 setCode의 파라미터와 동일합니다.

스마트 컨트랙트 업그레이드 시 시스템은 업그레이드 권한, 즉 컨트랙트 내 can_update(data) 함수를 자동으로 검사합니다. data 파라미터는 updateCode의 두 번째 인자입니다. can_update 함수가 존재하고 그 호출이 true를 반환하는 경우에만 컨트랙트 업그레이드가 성공합니다. 그렇지 않으면 업그레이드는 실패하며 업그레이드 권한이 없는 것으로 간주됩니다.

cancelDelaytx(txHash)

지연 트랜잭션을 취소합니다. 지연 트랜잭션이 실행되기 전에 이 함수를 호출해 취소할 수 있습니다.

파라미터타입비고
txHashstring트랜잭션 해시

requireAuth(acc, permission)

트랜잭션이 해당 계정의 권한을 가지고 있는지 확인합니다.

파라미터타입비고
accstring계정명
permissionstring권한 이름
반환값타입
okbool

receipt(data)

트랜잭션 영수증을 생성합니다. 영수증은 블록에 저장되며 트랜잭션 해시로 조회할 수 있습니다.

파라미터타입비고
datastring영수증 내용

exchange.iost


설명

주로 계정 생성과 그 계정으로의 송금에 사용되며, 기존 계정으로의 송금에도 사용할 수 있습니다.

정보

contract_idexchange.iost
languagejavascript
version1.0.0

API

transfer(tokenSym, to, amount, memo)

계정을 생성하고 송금합니다.

파라미터타입비고
tokenSymstring토큰 심볼
tostring토큰을 수령할 계정. 계정을 생성하는 경우 빈 문자열로 설정
amountstring송금 수량
memostring추가 정보. 계정을 생성하는 경우 create:{UserName}:{OwnerPublicKey}:{ActivePublicKey} 형식으로 설정

계정을 생성할 때 송금 수량은 최소 100 iost여야 합니다. 기본적으로 새로 생성된 계정에는 10 iost의 gas가 스테이킹되고 1K 바이트의 ram이 구매됩니다. 남은 금액은 새로 생성된 계정으로 송금됩니다.