55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {Buffer} from 'buffer';
 | 
						|
import nacl from 'tweetnacl';
 | 
						|
 | 
						|
import {
 | 
						|
  Connection,
 | 
						|
  Keypair,
 | 
						|
  sendAndConfirmTransaction,
 | 
						|
  LAMPORTS_PER_SOL,
 | 
						|
  Transaction,
 | 
						|
  Ed25519Program,
 | 
						|
} from '../src';
 | 
						|
import {url} from './url';
 | 
						|
 | 
						|
if (process.env.TEST_LIVE) {
 | 
						|
  describe('ed25519', () => {
 | 
						|
    const keypair = Keypair.generate();
 | 
						|
    const privateKey = keypair.secretKey;
 | 
						|
    const publicKey = keypair.publicKey.toBytes();
 | 
						|
    const from = Keypair.generate();
 | 
						|
    const connection = new Connection(url, 'confirmed');
 | 
						|
 | 
						|
    before(async function () {
 | 
						|
      await connection.confirmTransaction(
 | 
						|
        await connection.requestAirdrop(from.publicKey, 10 * LAMPORTS_PER_SOL),
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('create ed25519 instruction', async () => {
 | 
						|
      const message = Buffer.from('string address');
 | 
						|
      const signature = nacl.sign.detached(message, privateKey);
 | 
						|
      const transaction = new Transaction().add(
 | 
						|
        Ed25519Program.createInstructionWithPublicKey({
 | 
						|
          publicKey,
 | 
						|
          message,
 | 
						|
          signature,
 | 
						|
        }),
 | 
						|
      );
 | 
						|
 | 
						|
      await sendAndConfirmTransaction(connection, transaction, [from]);
 | 
						|
    });
 | 
						|
 | 
						|
    it('create ed25519 instruction with private key', async () => {
 | 
						|
      const message = Buffer.from('private key');
 | 
						|
      const transaction = new Transaction().add(
 | 
						|
        Ed25519Program.createInstructionWithPrivateKey({
 | 
						|
          privateKey,
 | 
						|
          message,
 | 
						|
        }),
 | 
						|
      );
 | 
						|
 | 
						|
      await sendAndConfirmTransaction(connection, transaction, [from]);
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |