# Asset

### **Arguments**

* **cap** `integrer` *optional*\
  발행한 코인 총량. 생략할 경우 무한으로 발행 가능
* **is\_private** `boolean` *required*\
  개인간 프라이버시가 보장된 자산인지 공개적으로 추적이 가능한 자산인지 설정.
* **is\_transferrable** `boolean` *required*\
  true 인 경우 임의의 당사자간에 자유롭게 자산의 이동이 가능하게 할 수 있다. false 인 경우 자산의 이동에 특정 사용자(자산 정의자)가 보내는 자나 받는 자로 명시해서 서명을 해야 자산을 이동시킬 수 있다. 후자의 경우 재판매가 불가능한 고객 포인트 등에 유용하게 사용할 수 있다.
* **auto\_destroy** `boolean` *required*

  자산을 정의한 주소로 송금하면 자동 소각을 하는지 여부를 결정할 수 있다.
* **fixed\_denominations** `boolean` *required*

  true 이면 자산이 제한된 디노미네이션을 가진 코인으로 발행된다. 이 경우 자산 정의 오브젝트(Asset Object)에 denominations 프로퍼티를 반드시 포함해야 하며 이것은 통화 단위로 설정한 모든 디노미네이션의 배열이다.
* **denominations** `array` *optional*\
  통화 단위로 설정한 각 코인의 갯수를 정의한 모든 디노미네이션의 배열
* **issued\_by\_definer\_only** `boolean` *required*\
  자산 정의자만 발행할 수 있는 지 여부를 설정한다. false 일 경우 누구라도 자산을 발행할 수 있지만 이 경우 'cap'은 무한으로 설정해야 한다.
* **cosigned\_by\_definer** `boolean` *required*\
  자산과 관련된 모든 동작에 발행자가 별도로 서명을 해야하는지 여부를 설정한다. 거래 진행 이전에 발행자가 다양한 법규 준수 여부를 체크해야 하는 제도권 자산 등을 정의할 때 유용하게 사용될 수 있다.
* **spender\_attested** `boolean` *required*\
  자산의 사용자가 사용 전에 입증된 증명 발급자에 의해 인증되어야 하는지 여부를 설정할 수 있다. 신원확인된 유저에게만 접근 권한을 줘야하는 규제가 필요한 자산 등에 유용하게 사용될 수 있다. true 일 경우 거래 정의 오브젝트에 입증된 인증 발급자의 주소를 첨부해야 한다.
* **attestors** `array` *optional*\
  입증된 인증 발급자 주소 배열
* **issue\_condition** `array` *optional*\
  자산 발행 제한 조건을 스마트 컨트랙 랭귀지(주소 선언 및 정의에 사용하는 것과 동일)를 이용해 정의한다.
* **transfer\_condition** `array` *optional*\
  자산의 이전에 대한 제한 조건을 스마트 컨트랙 랭귀지(주소 선언 및 정의에 사용하는 것과 동일)를 이용해 정의한다.

### Returns

해당 자산이 발행된 유닛의 해시를 리턴한다.

### Example

```javascript
const params = {
  cap: 1000000, 
  is_private: false, 
  is_transferrable: true, 
  auto_destroy: false, 
  fixed_denominations: false, 
  issued_by_definer_only: true, 
  cosigned_by_definer: false, 
  spender_attested: false
}; 

client.post.asset(params, wif, function(err, result) { 
  console.log(result);
  // -> xamdfH5Uk+alv3le0pEA01qSsfZjycyMsqaqHtycJ1M=
});
```
