Emit SaleMatched 이벤트가 발생하지 않고 먹통이 됩니다

// 땅 구매를 위해 호출합니다
const buyLand = async() => {
var fromAddress = prompt(“구매자 주소 입력하세요”, ADDRESS_BUYER);
var tokenId = prompt(“Enter Cell ID”, “1”);
var sendPrice = prompt(“송금할 토큰 갯수를 입력하세요”, “2”);
// kip7으로 토큰 전송
const token_price = caverKas.utils.convertToPeb(sendPrice);
// kip17 contract와 tokenId를 encode
let data = caverKas.abi.encodeParameters([‘address’, ‘uint256’], [CONTRACT_ADDRESS, tokenId]);
console.log(data)
//let data = caverKas.abi.encodeParameter(‘address’, tokenId);
const receipt = await safeTransferToken(fromAddress, CONTRACT_ADDRESS_MARKET, token_price, data);
console.log(receipt)
}

// 토큰 전송 함수
const safeTransferToken = async(fromAddress, marketContract, price, data) => {
try {
const receipt = await contractKasKIP7.methods.safeTransfer(marketContract, price, data).send({
from: fromAddress,
gas: “800000”,
// nonce: nonce
});
console.log("from: ",receipt.events.Transfer.returnValues[0], "to: ", receipt.events.Transfer.returnValues[1],
"amount: ", receipt.events.Transfer.returnValues[2]);
// console.log(receipt);
// console.log("tokenId: ",receipt.events.SaleMatched.returnValues[1], "sale.seller: ", receipt.events.ApprovalForAll.returnValues[2],
// "price: ", receipt.events.ApprovalForAll.returnValues[4], "buyer: ", receipt.events.ApprovalForAll.returnValues[5]);
// console.log(receipt);
} catch(e) {
console.log([Error]${e});
}
}

마켓으로 자체 토큰을 전송해서 onKIP7Received 함수가 제대로 호출까지 되고 nft랑 ft 잘 서로 교환이 완료되었는데 klaytn-contracts 안의 KIP17FixedPriceExchange.sol 파일 안에 구현되어 있는대로 emit SaleMatched 가 호출되지 못하고 그냥 먹통이 되어버립니다. 이벤트를 받아야 제대로 완료되었다고 고지를 할텐데요…

// 마켓 컨트랙트
function onKIP7Received(address operator, address payable from, uint256 amount, bytes memory data) public returns (bytes4) {
(address kip17Contract, uint256 tokenId) = abi.decode(data, (address, uint256));
Sale storage sale = _sales[kip17Contract][tokenId];

    // 이 함수는 kip7Contract에서 자동 호출되므로 sender가 contract이 되는것이다
    address priceContract = msg.sender;

    // 토큰 계약서와 금액이 동일한지 확인
    require(sale.priceContract == priceContract, "SLMarket: priceContract not matched");
    require(sale.price == amount, "SLMarket: price not matched");

    // from은 결국 NFT구매자이므로 buyer로 변수를 정확하게 구분한다
    address payable buyer = from;

    // 판매가 진행됨을 알려준다 ====> ***아래 이벤트가 전혀 호출되지 못하고 있습니다***
    emit SaleMatched(kip17Contract, tokenId, sale.seller, sale.priceContract, sale.price, buyer);

    // 이 함수를 호출하는쪽은 구매자이다, 첫번째 인자는 판매자 주소이며, 구매자 계좌의 kip7 토큰이 이 주소로  송금된다
    // 두번째 인자는 구매자의 계좌에 sale.price만큼의 잔액이 있어야 성공한다
    // 마켓으로 돈이 전송되었으므로 msg.sender는 마켓 자체임 즉, operator == market
    // 아래 함수는 마켓이 seller에게 price를 전송하는것임
    IKIP7(sale.priceContract).safeTransfer(sale.seller, sale.price);
    // NFT 토큰을 전송함
    IKIP17(kip17Contract).transferFrom(sale.seller, buyer, tokenId);

    // 판매 완료
    delete _sales[kip17Contract][tokenId];

    return _KIP7_RECEIVED;
}

클레이튼 관계자님 답변 기다립니다… ㅜ.ㅜ 이걸로 몇개월째 진도를 못나가네요 에거 참

위에 emit 도 문제이지만 safeTransfer 호출 이후로 리턴이 안오고 있습니다
뭐가 문제인걸까요 ㅜ.ㅜ